// This C++ source file was generated by the ASN.1 compiler // of the TTCN-3 Test Executor version 11.1.0 // The generation of user and time information were disabled by the -D flag. // Copyright (c) 2000-2025 Ericsson Telecom AB // Do not edit this file unless you know what you are doing. /* Including header files */ #include "RANAP_IEs.hh" namespace RANAP__IEs { /* Global variable definitions */ // No XER for AccuracyFulfilmentIndicator const TTCN_JSONdescriptor_t AccuracyFulfilmentIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AccuracyFulfilmentIndicator_oer_ext_arr_[0] = {}; const int AccuracyFulfilmentIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t AccuracyFulfilmentIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AccuracyFulfilmentIndicator_oer_ext_arr_, 0, AccuracyFulfilmentIndicator_oer_p_}; static const Per_Constraint AccuracyFulfilmentIndicator_per_cons_; const ASN_PERdescriptor_t AccuracyFulfilmentIndicator_per_ = { &AccuracyFulfilmentIndicator_per_cons_ }; const TTCN_Typedescriptor_t AccuracyFulfilmentIndicator_descr_ = { "@RANAP-IEs.AccuracyFulfilmentIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &AccuracyFulfilmentIndicator_json_, &AccuracyFulfilmentIndicator_oer_, &AccuracyFulfilmentIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AccuracyFulfilmentIndicator_default_coding(""); // No XER for Additional__CSPS__coordination__information const TTCN_JSONdescriptor_t Additional__CSPS__coordination__information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Additional__CSPS__coordination__information_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_oer_ = { -1, TRUE, -1, TRUE, 5, 0, Additional__CSPS__coordination__information_oer_ext_arr_, 5, Additional__CSPS__coordination__information_oer_p_}; static const Per_Constraint Additional__CSPS__coordination__information_per_cons_; const ASN_PERdescriptor_t Additional__CSPS__coordination__information_per_ = { &Additional__CSPS__coordination__information_per_cons_ }; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information", &SEQUENCE_ber_, NULL, NULL, NULL, &Additional__CSPS__coordination__information_json_, &Additional__CSPS__coordination__information_oer_, &Additional__CSPS__coordination__information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_Typedescriptor_t& TBCD__STRING_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING TBCD__STRING_default_coding(""); // No XER for PLMNidentity const int PLMNidentity_oer_ext_arr_[0] = {}; const int PLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, PLMNidentity_oer_ext_arr_, 0, PLMNidentity_oer_p_}; static Per_Integer_Constraint PLMNidentity_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(3), FALSE); const ASN_PERdescriptor_t PLMNidentity_per_ = { &PLMNidentity_per_cons_ }; const TTCN_Typedescriptor_t PLMNidentity_descr_ = { "@RANAP-IEs.PLMNidentity", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNidentity_default_coding(""); const ASN_Tag_t LAI_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LAI_pLMNidentity_ber_ = { 1u, LAI_pLMNidentity_tag_ }; // No XER for LAI_pLMNidentity const int LAI_pLMNidentity_oer_ext_arr_[0] = {}; const int LAI_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAI_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, LAI_pLMNidentity_oer_ext_arr_, 0, LAI_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t LAI_pLMNidentity_descr_ = { "@RANAP-IEs.LAI.pLMNidentity", &LAI_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LAI_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAI_pLMNidentity_default_coding(""); // No XER for LAC const int LAC_oer_ext_arr_[0] = {}; const int LAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, LAC_oer_ext_arr_, 0, LAC_oer_p_}; static Per_Integer_Constraint LAC_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t LAC_per_ = { &LAC_per_cons_ }; const TTCN_Typedescriptor_t LAC_descr_ = { "@RANAP-IEs.LAC", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LAC_oer_, &LAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAC_default_coding(""); const ASN_Tag_t LAI_lAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LAI_lAC_ber_ = { 1u, LAI_lAC_tag_ }; // No XER for LAI_lAC const int LAI_lAC_oer_ext_arr_[0] = {}; const int LAI_lAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAI_lAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, LAI_lAC_oer_ext_arr_, 0, LAI_lAC_oer_p_}; const TTCN_Typedescriptor_t LAI_lAC_descr_ = { "@RANAP-IEs.LAI.lAC", &LAI_lAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LAI_lAC_oer_, &LAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAI_lAC_default_coding(""); // No XER for LAI const TTCN_JSONdescriptor_t LAI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LAI_oer_ext_arr_[0] = {}; const int LAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAI_oer_ext_arr_, 3, LAI_oer_p_}; static const Per_Constraint LAI_per_cons_; const ASN_PERdescriptor_t LAI_per_ = { &LAI_per_cons_ }; const TTCN_Typedescriptor_t LAI_descr_ = { "@RANAP-IEs.LAI", &SEQUENCE_ber_, NULL, NULL, NULL, &LAI_json_, &LAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_default_coding(""); const ASN_Tag_t LAI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LAI_iE__Extensions_ber_ = { 1u, LAI_iE__Extensions_tag_ }; // No XER for LAI_iE__Extensions const int LAI_iE__Extensions_oer_ext_arr_[0] = {}; const int LAI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAI_iE__Extensions_oer_ext_arr_, 0, LAI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LAI_iE__Extensions_descr_ = { "@RANAP-IEs.LAI.iE-Extensions", &LAI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_json_, &LAI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LAI_default_coding(""); const ASN_Tag_t Additional__CSPS__coordination__information_old__LAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Additional__CSPS__coordination__information_old__LAI_ber_ = { 1u, Additional__CSPS__coordination__information_old__LAI_tag_ }; // No XER for Additional__CSPS__coordination__information_old__LAI const int Additional__CSPS__coordination__information_old__LAI_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_old__LAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_old__LAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Additional__CSPS__coordination__information_old__LAI_oer_ext_arr_, 3, Additional__CSPS__coordination__information_old__LAI_oer_p_}; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_old__LAI_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information.old-LAI", &Additional__CSPS__coordination__information_old__LAI_ber_, NULL, NULL, NULL, &LAI_json_, &Additional__CSPS__coordination__information_old__LAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_old__LAI_default_coding(""); // No XER for RAC const int RAC_oer_ext_arr_[0] = {}; const int RAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAC_oer_ext_arr_, 0, RAC_oer_p_}; static Per_Integer_Constraint RAC_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t RAC_per_ = { &RAC_per_cons_ }; const TTCN_Typedescriptor_t RAC_descr_ = { "@RANAP-IEs.RAC", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RAC_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAC_default_coding(""); const ASN_Tag_t Additional__CSPS__coordination__information_old__RAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Additional__CSPS__coordination__information_old__RAC_ber_ = { 1u, Additional__CSPS__coordination__information_old__RAC_tag_ }; // No XER for Additional__CSPS__coordination__information_old__RAC const int Additional__CSPS__coordination__information_old__RAC_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_old__RAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_old__RAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Additional__CSPS__coordination__information_old__RAC_oer_ext_arr_, 0, Additional__CSPS__coordination__information_old__RAC_oer_p_}; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_old__RAC_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information.old-RAC", &Additional__CSPS__coordination__information_old__RAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Additional__CSPS__coordination__information_old__RAC_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_old__RAC_default_coding(""); const ASN_Tag_t Additional__CSPS__coordination__information_nRI_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Additional__CSPS__coordination__information_nRI_ber_ = { 1u, Additional__CSPS__coordination__information_nRI_tag_ }; // No XER for Additional__CSPS__coordination__information_nRI const int Additional__CSPS__coordination__information_nRI_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_nRI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_nRI_oer_ = { -1, TRUE, 10, FALSE, 0, 0, Additional__CSPS__coordination__information_nRI_oer_ext_arr_, 0, Additional__CSPS__coordination__information_nRI_oer_p_}; static Per_Integer_Constraint Additional__CSPS__coordination__information_nRI_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(10), FALSE); static Per_BitString_Constraint Additional__CSPS__coordination__information_nRI_per_cons_(FALSE, &Additional__CSPS__coordination__information_nRI_size_per_cons_); const ASN_PERdescriptor_t Additional__CSPS__coordination__information_nRI_per_ = { &Additional__CSPS__coordination__information_nRI_per_cons_ }; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_nRI_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information.nRI", &Additional__CSPS__coordination__information_nRI_ber_, NULL, NULL, NULL, &BITSTRING_json_, &Additional__CSPS__coordination__information_nRI_oer_, &Additional__CSPS__coordination__information_nRI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_nRI_default_coding(""); const ASN_Tag_t Additional__CSPS__coordination__information_uE__is__Attaching_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t Additional__CSPS__coordination__information_uE__is__Attaching_ber_ = { 1u, Additional__CSPS__coordination__information_uE__is__Attaching_tag_ }; // No XER for Additional__CSPS__coordination__information_uE__is__Attaching const int Additional__CSPS__coordination__information_uE__is__Attaching_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_uE__is__Attaching_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_uE__is__Attaching_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Additional__CSPS__coordination__information_uE__is__Attaching_oer_ext_arr_, 0, Additional__CSPS__coordination__information_uE__is__Attaching_oer_p_}; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_uE__is__Attaching_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information.uE-is-Attaching", &Additional__CSPS__coordination__information_uE__is__Attaching_ber_, NULL, NULL, NULL, &ASN_NULL_json_, &Additional__CSPS__coordination__information_uE__is__Attaching_oer_, &ASN_NULL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_uE__is__Attaching_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_default_coding(""); const ASN_Tag_t Additional__CSPS__coordination__information_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t Additional__CSPS__coordination__information_iE__Extensions_ber_ = { 1u, Additional__CSPS__coordination__information_iE__Extensions_tag_ }; // No XER for Additional__CSPS__coordination__information_iE__Extensions const int Additional__CSPS__coordination__information_iE__Extensions_oer_ext_arr_[0] = {}; const int Additional__CSPS__coordination__information_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__CSPS__coordination__information_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Additional__CSPS__coordination__information_iE__Extensions_oer_ext_arr_, 0, Additional__CSPS__coordination__information_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Additional__CSPS__coordination__information_iE__Extensions_descr_ = { "@RANAP-IEs.Additional-CSPS-coordination-information.iE-Extensions", &Additional__CSPS__coordination__information_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_json_, &Additional__CSPS__coordination__information_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Additional__CSPS__coordination__information_default_coding(""); // No XER for Additional__PositioningDataSet const TTCN_JSONdescriptor_t Additional__PositioningDataSet_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Additional__PositioningDataSet_oer_ext_arr_[0] = {}; const int Additional__PositioningDataSet_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__PositioningDataSet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Additional__PositioningDataSet_oer_ext_arr_, 0, Additional__PositioningDataSet_oer_p_}; static Per_Integer_Constraint Additional__PositioningDataSet_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t Additional__PositioningDataSet_per_ = { &Additional__PositioningDataSet_per_cons_ }; const TTCN_Typedescriptor_t Additional__PositioningDataSet_descr_ = { "@RANAP-IEs.Additional-PositioningDataSet", &SEQUENCE_ber_, NULL, NULL, NULL, &Additional__PositioningDataSet_json_, &Additional__PositioningDataSet_oer_, &Additional__PositioningDataSet_per_, &Additional__PositioningDataSet_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Additional__PositioningMethodAndUsage const int Additional__PositioningMethodAndUsage_oer_ext_arr_[0] = {}; const int Additional__PositioningMethodAndUsage_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__PositioningMethodAndUsage_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Additional__PositioningMethodAndUsage_oer_ext_arr_, 0, Additional__PositioningMethodAndUsage_oer_p_}; static Per_Integer_Constraint Additional__PositioningMethodAndUsage_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t Additional__PositioningMethodAndUsage_per_ = { &Additional__PositioningMethodAndUsage_per_cons_ }; const TTCN_Typedescriptor_t Additional__PositioningMethodAndUsage_descr_ = { "@RANAP-IEs.Additional-PositioningMethodAndUsage", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Additional__PositioningMethodAndUsage_oer_, &Additional__PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__PositioningMethodAndUsage_default_coding(""); // No XER for Additional__PositioningDataSet_0 const int Additional__PositioningDataSet_0_oer_ext_arr_[0] = {}; const int Additional__PositioningDataSet_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Additional__PositioningDataSet_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Additional__PositioningDataSet_0_oer_ext_arr_, 0, Additional__PositioningDataSet_0_oer_p_}; const TTCN_Typedescriptor_t Additional__PositioningDataSet_0_descr_ = { "@RANAP-IEs.Additional-PositioningDataSet.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Additional__PositioningDataSet_0_oer_, &Additional__PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Additional__PositioningDataSet_0_default_coding(""); UNIVERSAL_CHARSTRING Additional__PositioningDataSet_default_coding(""); // No XER for PriorityLevel const int PriorityLevel_oer_ext_arr_[0] = {}; const int PriorityLevel_oer_p_[0] = {}; const TTCN_OERdescriptor_t PriorityLevel_oer_ = { 1, FALSE, -1, FALSE, 0, 0, PriorityLevel_oer_ext_arr_, 0, PriorityLevel_oer_p_}; static Per_Integer_Constraint PriorityLevel_per_cons_(new INTEGER(0), new INTEGER(15), FALSE); const ASN_PERdescriptor_t PriorityLevel_per_ = { &PriorityLevel_per_cons_ }; const TTCN_Typedescriptor_t PriorityLevel_descr_ = { "@RANAP-IEs.PriorityLevel", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &PriorityLevel_oer_, &PriorityLevel_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PriorityLevel_default_coding(""); const ASN_Tag_t AllocationOrRetentionPriority_priorityLevel_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t AllocationOrRetentionPriority_priorityLevel_ber_ = { 1u, AllocationOrRetentionPriority_priorityLevel_tag_ }; // No XER for AllocationOrRetentionPriority_priorityLevel const int AllocationOrRetentionPriority_priorityLevel_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_priorityLevel_oer_p_[0] = {}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_priorityLevel_oer_ = { 1, FALSE, -1, FALSE, 0, 0, AllocationOrRetentionPriority_priorityLevel_oer_ext_arr_, 0, AllocationOrRetentionPriority_priorityLevel_oer_p_}; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_priorityLevel_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority.priorityLevel", &AllocationOrRetentionPriority_priorityLevel_ber_, NULL, NULL, NULL, &INTEGER_json_, &AllocationOrRetentionPriority_priorityLevel_oer_, &PriorityLevel_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_priorityLevel_default_coding(""); // No XER for Pre__emptionCapability const TTCN_JSONdescriptor_t Pre__emptionCapability_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Pre__emptionCapability_oer_ext_arr_[0] = {}; const int Pre__emptionCapability_oer_p_[0] = {}; const TTCN_OERdescriptor_t Pre__emptionCapability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Pre__emptionCapability_oer_ext_arr_, 0, Pre__emptionCapability_oer_p_}; static const Per_Constraint Pre__emptionCapability_per_cons_; const ASN_PERdescriptor_t Pre__emptionCapability_per_ = { &Pre__emptionCapability_per_cons_ }; const TTCN_Typedescriptor_t Pre__emptionCapability_descr_ = { "@RANAP-IEs.Pre-emptionCapability", &ENUMERATED_ber_, NULL, NULL, NULL, &Pre__emptionCapability_json_, &Pre__emptionCapability_oer_, &Pre__emptionCapability_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Pre__emptionCapability_default_coding(""); const ASN_Tag_t AllocationOrRetentionPriority_pre__emptionCapability_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t AllocationOrRetentionPriority_pre__emptionCapability_ber_ = { 1u, AllocationOrRetentionPriority_pre__emptionCapability_tag_ }; // No XER for AllocationOrRetentionPriority_pre__emptionCapability const int AllocationOrRetentionPriority_pre__emptionCapability_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_pre__emptionCapability_oer_p_[0] = {}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_pre__emptionCapability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AllocationOrRetentionPriority_pre__emptionCapability_oer_ext_arr_, 0, AllocationOrRetentionPriority_pre__emptionCapability_oer_p_}; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_pre__emptionCapability_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority.pre-emptionCapability", &AllocationOrRetentionPriority_pre__emptionCapability_ber_, NULL, NULL, NULL, &Pre__emptionCapability_json_, &AllocationOrRetentionPriority_pre__emptionCapability_oer_, &Pre__emptionCapability_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_pre__emptionCapability_default_coding(""); // No XER for Pre__emptionVulnerability const TTCN_JSONdescriptor_t Pre__emptionVulnerability_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Pre__emptionVulnerability_oer_ext_arr_[0] = {}; const int Pre__emptionVulnerability_oer_p_[0] = {}; const TTCN_OERdescriptor_t Pre__emptionVulnerability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Pre__emptionVulnerability_oer_ext_arr_, 0, Pre__emptionVulnerability_oer_p_}; static const Per_Constraint Pre__emptionVulnerability_per_cons_; const ASN_PERdescriptor_t Pre__emptionVulnerability_per_ = { &Pre__emptionVulnerability_per_cons_ }; const TTCN_Typedescriptor_t Pre__emptionVulnerability_descr_ = { "@RANAP-IEs.Pre-emptionVulnerability", &ENUMERATED_ber_, NULL, NULL, NULL, &Pre__emptionVulnerability_json_, &Pre__emptionVulnerability_oer_, &Pre__emptionVulnerability_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Pre__emptionVulnerability_default_coding(""); const ASN_Tag_t AllocationOrRetentionPriority_pre__emptionVulnerability_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t AllocationOrRetentionPriority_pre__emptionVulnerability_ber_ = { 1u, AllocationOrRetentionPriority_pre__emptionVulnerability_tag_ }; // No XER for AllocationOrRetentionPriority_pre__emptionVulnerability const int AllocationOrRetentionPriority_pre__emptionVulnerability_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_pre__emptionVulnerability_oer_p_[0] = {}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_pre__emptionVulnerability_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AllocationOrRetentionPriority_pre__emptionVulnerability_oer_ext_arr_, 0, AllocationOrRetentionPriority_pre__emptionVulnerability_oer_p_}; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_pre__emptionVulnerability_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority.pre-emptionVulnerability", &AllocationOrRetentionPriority_pre__emptionVulnerability_ber_, NULL, NULL, NULL, &Pre__emptionVulnerability_json_, &AllocationOrRetentionPriority_pre__emptionVulnerability_oer_, &Pre__emptionVulnerability_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_pre__emptionVulnerability_default_coding(""); // No XER for QueuingAllowed const TTCN_JSONdescriptor_t QueuingAllowed_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int QueuingAllowed_oer_ext_arr_[0] = {}; const int QueuingAllowed_oer_p_[0] = {}; const TTCN_OERdescriptor_t QueuingAllowed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, QueuingAllowed_oer_ext_arr_, 0, QueuingAllowed_oer_p_}; static const Per_Constraint QueuingAllowed_per_cons_; const ASN_PERdescriptor_t QueuingAllowed_per_ = { &QueuingAllowed_per_cons_ }; const TTCN_Typedescriptor_t QueuingAllowed_descr_ = { "@RANAP-IEs.QueuingAllowed", &ENUMERATED_ber_, NULL, NULL, NULL, &QueuingAllowed_json_, &QueuingAllowed_oer_, &QueuingAllowed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING QueuingAllowed_default_coding(""); const ASN_Tag_t AllocationOrRetentionPriority_queuingAllowed_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t AllocationOrRetentionPriority_queuingAllowed_ber_ = { 1u, AllocationOrRetentionPriority_queuingAllowed_tag_ }; // No XER for AllocationOrRetentionPriority_queuingAllowed const int AllocationOrRetentionPriority_queuingAllowed_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_queuingAllowed_oer_p_[0] = {}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_queuingAllowed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AllocationOrRetentionPriority_queuingAllowed_oer_ext_arr_, 0, AllocationOrRetentionPriority_queuingAllowed_oer_p_}; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_queuingAllowed_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority.queuingAllowed", &AllocationOrRetentionPriority_queuingAllowed_ber_, NULL, NULL, NULL, &QueuingAllowed_json_, &AllocationOrRetentionPriority_queuingAllowed_oer_, &QueuingAllowed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_queuingAllowed_default_coding(""); // No XER for AllocationOrRetentionPriority const TTCN_JSONdescriptor_t AllocationOrRetentionPriority_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AllocationOrRetentionPriority_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_oer_ = { -1, TRUE, -1, TRUE, 5, 0, AllocationOrRetentionPriority_oer_ext_arr_, 5, AllocationOrRetentionPriority_oer_p_}; static const Per_Constraint AllocationOrRetentionPriority_per_cons_; const ASN_PERdescriptor_t AllocationOrRetentionPriority_per_ = { &AllocationOrRetentionPriority_per_cons_ }; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority", &SEQUENCE_ber_, NULL, NULL, NULL, &AllocationOrRetentionPriority_json_, &AllocationOrRetentionPriority_oer_, &AllocationOrRetentionPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_default_coding(""); const ASN_Tag_t AllocationOrRetentionPriority_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t AllocationOrRetentionPriority_iE__Extensions_ber_ = { 1u, AllocationOrRetentionPriority_iE__Extensions_tag_ }; // No XER for AllocationOrRetentionPriority_iE__Extensions const int AllocationOrRetentionPriority_iE__Extensions_oer_ext_arr_[0] = {}; const int AllocationOrRetentionPriority_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t AllocationOrRetentionPriority_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AllocationOrRetentionPriority_iE__Extensions_oer_ext_arr_, 0, AllocationOrRetentionPriority_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t AllocationOrRetentionPriority_iE__Extensions_descr_ = { "@RANAP-IEs.AllocationOrRetentionPriority.iE-Extensions", &AllocationOrRetentionPriority_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_json_, &AllocationOrRetentionPriority_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING AllocationOrRetentionPriority_default_coding(""); // No XER for Alt__RAB__Parameters const TTCN_JSONdescriptor_t Alt__RAB__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameters_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Alt__RAB__Parameters_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Alt__RAB__Parameters_oer_ext_arr_, 3, Alt__RAB__Parameters_oer_p_}; static const Per_Constraint Alt__RAB__Parameters_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameters_per_ = { &Alt__RAB__Parameters_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameters_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameters_json_, &Alt__RAB__Parameters_oer_, &Alt__RAB__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__MaxBitrateType const TTCN_JSONdescriptor_t Alt__RAB__Parameter__MaxBitrateType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__MaxBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrateType_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__MaxBitrateType_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__MaxBitrateType_per_ = { &Alt__RAB__Parameter__MaxBitrateType_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType", &ENUMERATED_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateType_json_, &Alt__RAB__Parameter__MaxBitrateType_oer_, &Alt__RAB__Parameter__MaxBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateType_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_ber_ = { 1u, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType const int Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf.altMaxBitrateType", &Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateType_json_, &Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_oer_, &Alt__RAB__Parameter__MaxBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__MaxBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__MaxBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameter__MaxBitrateInf_oer_ext_arr_, 2, Alt__RAB__Parameter__MaxBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__MaxBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_per_ = { &Alt__RAB__Parameter__MaxBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateInf_json_, &Alt__RAB__Parameter__MaxBitrateInf_oer_, &Alt__RAB__Parameter__MaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__MaxBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__MaxBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__MaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__MaxBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__MaxBitrates_per_ = { &Alt__RAB__Parameter__MaxBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrates_json_, &Alt__RAB__Parameter__MaxBitrates_oer_, &Alt__RAB__Parameter__MaxBitrates_per_, &Alt__RAB__Parameter__MaxBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__MaxBitrateList const TTCN_JSONdescriptor_t Alt__RAB__Parameter__MaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__MaxBitrateList_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrateList_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrateList_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__MaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__MaxBitrateList_per_ = { &Alt__RAB__Parameter__MaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateList_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateList_json_, &Alt__RAB__Parameter__MaxBitrateList_oer_, &Alt__RAB__Parameter__MaxBitrateList_per_, &Alt__RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MaxBitrate const int MaxBitrate_oer_ext_arr_[0] = {}; const int MaxBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t MaxBitrate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, MaxBitrate_oer_ext_arr_, 0, MaxBitrate_oer_p_}; static Per_Integer_Constraint MaxBitrate_per_cons_(new INTEGER(1), new INTEGER(16000000), FALSE); const ASN_PERdescriptor_t MaxBitrate_per_ = { &MaxBitrate_per_cons_ }; const TTCN_Typedescriptor_t MaxBitrate_descr_ = { "@RANAP-IEs.MaxBitrate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &MaxBitrate_oer_, &MaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MaxBitrate_default_coding(""); // No XER for Alt__RAB__Parameter__MaxBitrateList_0 const int Alt__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateList_0_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Alt__RAB__Parameter__MaxBitrateList_0_oer_, &MaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateList_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_ber_ = { 1u, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_tag_ }; // No XER for Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates const int Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf.altMaxBitrates", &Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrates_json_, &Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_oer_, &Alt__RAB__Parameter__MaxBitrates_per_, &Alt__RAB__Parameter__MaxBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__MaxBitrateInf_default_coding(""); const ASN_Tag_t Alt__RAB__Parameters_altMaxBitrateInf_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameters_altMaxBitrateInf_ber_ = { 1u, Alt__RAB__Parameters_altMaxBitrateInf_tag_ }; // No XER for Alt__RAB__Parameters_altMaxBitrateInf const int Alt__RAB__Parameters_altMaxBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters_altMaxBitrateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameters_altMaxBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameters_altMaxBitrateInf_oer_ext_arr_, 2, Alt__RAB__Parameters_altMaxBitrateInf_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters_altMaxBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters.altMaxBitrateInf", &Alt__RAB__Parameters_altMaxBitrateInf_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateInf_json_, &Alt__RAB__Parameters_altMaxBitrateInf_oer_, &Alt__RAB__Parameter__MaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameters_altMaxBitrateInf_default_coding(""); // No XER for Alt__RAB__Parameter__GuaranteedBitrateType const TTCN_JSONdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__GuaranteedBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrateType_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__GuaranteedBitrateType_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateType_per_ = { &Alt__RAB__Parameter__GuaranteedBitrateType_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType", &ENUMERATED_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateType_json_, &Alt__RAB__Parameter__GuaranteedBitrateType_oer_, &Alt__RAB__Parameter__GuaranteedBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateType_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_ber_ = { 1u, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType const int Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf.altGuaranteedBitrateType", &Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateType_json_, &Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_oer_, &Alt__RAB__Parameter__GuaranteedBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__GuaranteedBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__GuaranteedBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameter__GuaranteedBitrateInf_oer_ext_arr_, 2, Alt__RAB__Parameter__GuaranteedBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__GuaranteedBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_per_ = { &Alt__RAB__Parameter__GuaranteedBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateInf_json_, &Alt__RAB__Parameter__GuaranteedBitrateInf_oer_, &Alt__RAB__Parameter__GuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__GuaranteedBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__GuaranteedBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__GuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__GuaranteedBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrates_per_ = { &Alt__RAB__Parameter__GuaranteedBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrates_json_, &Alt__RAB__Parameter__GuaranteedBitrates_oer_, &Alt__RAB__Parameter__GuaranteedBitrates_per_, &Alt__RAB__Parameter__GuaranteedBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__GuaranteedBitrateList const TTCN_JSONdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__GuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_per_ = { &Alt__RAB__Parameter__GuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateList_json_, &Alt__RAB__Parameter__GuaranteedBitrateList_oer_, &Alt__RAB__Parameter__GuaranteedBitrateList_per_, &Alt__RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for GuaranteedBitrate const int GuaranteedBitrate_oer_ext_arr_[0] = {}; const int GuaranteedBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t GuaranteedBitrate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, GuaranteedBitrate_oer_ext_arr_, 0, GuaranteedBitrate_oer_p_}; static Per_Integer_Constraint GuaranteedBitrate_per_cons_(new INTEGER(0), new INTEGER(16000000), FALSE); const ASN_PERdescriptor_t GuaranteedBitrate_per_ = { &GuaranteedBitrate_per_cons_ }; const TTCN_Typedescriptor_t GuaranteedBitrate_descr_ = { "@RANAP-IEs.GuaranteedBitrate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &GuaranteedBitrate_oer_, &GuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GuaranteedBitrate_default_coding(""); // No XER for Alt__RAB__Parameter__GuaranteedBitrateList_0 const int Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Alt__RAB__Parameter__GuaranteedBitrateList_0_oer_, &GuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateList_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_ber_ = { 1u, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_tag_ }; // No XER for Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates const int Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf.altGuaranteedBitrates", &Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrates_json_, &Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_oer_, &Alt__RAB__Parameter__GuaranteedBitrates_per_, &Alt__RAB__Parameter__GuaranteedBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__GuaranteedBitrateInf_default_coding(""); const ASN_Tag_t Alt__RAB__Parameters_altGuaranteedBitRateInf_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameters_altGuaranteedBitRateInf_ber_ = { 1u, Alt__RAB__Parameters_altGuaranteedBitRateInf_tag_ }; // No XER for Alt__RAB__Parameters_altGuaranteedBitRateInf const int Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_ext_arr_, 2, Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters.altGuaranteedBitRateInf", &Alt__RAB__Parameters_altGuaranteedBitRateInf_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateInf_json_, &Alt__RAB__Parameters_altGuaranteedBitRateInf_oer_, &Alt__RAB__Parameter__GuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameters_altGuaranteedBitRateInf_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TrafficClass const TTCN_JSONdescriptor_t TrafficClass_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TrafficClass_oer_ext_arr_[0] = {}; const int TrafficClass_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrafficClass_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TrafficClass_oer_ext_arr_, 0, TrafficClass_oer_p_}; static const Per_Constraint TrafficClass_per_cons_; const ASN_PERdescriptor_t TrafficClass_per_ = { &TrafficClass_per_cons_ }; const TTCN_Typedescriptor_t TrafficClass_descr_ = { "@RANAP-IEs.TrafficClass", &ENUMERATED_ber_, NULL, NULL, NULL, &TrafficClass_json_, &TrafficClass_oer_, &TrafficClass_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficClass_default_coding(""); const ASN_Tag_t RAB__Parameters_trafficClass_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RAB__Parameters_trafficClass_ber_ = { 1u, RAB__Parameters_trafficClass_tag_ }; // No XER for RAB__Parameters_trafficClass const int RAB__Parameters_trafficClass_oer_ext_arr_[0] = {}; const int RAB__Parameters_trafficClass_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_trafficClass_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_trafficClass_oer_ext_arr_, 0, RAB__Parameters_trafficClass_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_trafficClass_descr_ = { "@RANAP-IEs.RAB-Parameters.trafficClass", &RAB__Parameters_trafficClass_ber_, NULL, NULL, NULL, &TrafficClass_json_, &RAB__Parameters_trafficClass_oer_, &TrafficClass_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_trafficClass_default_coding(""); // No XER for RAB__AsymmetryIndicator const TTCN_JSONdescriptor_t RAB__AsymmetryIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__AsymmetryIndicator_oer_ext_arr_[0] = {}; const int RAB__AsymmetryIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__AsymmetryIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__AsymmetryIndicator_oer_ext_arr_, 0, RAB__AsymmetryIndicator_oer_p_}; static const Per_Constraint RAB__AsymmetryIndicator_per_cons_; const ASN_PERdescriptor_t RAB__AsymmetryIndicator_per_ = { &RAB__AsymmetryIndicator_per_cons_ }; const TTCN_Typedescriptor_t RAB__AsymmetryIndicator_descr_ = { "@RANAP-IEs.RAB-AsymmetryIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &RAB__AsymmetryIndicator_json_, &RAB__AsymmetryIndicator_oer_, &RAB__AsymmetryIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__AsymmetryIndicator_default_coding(""); const ASN_Tag_t RAB__Parameters_rAB__AsymmetryIndicator_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RAB__Parameters_rAB__AsymmetryIndicator_ber_ = { 1u, RAB__Parameters_rAB__AsymmetryIndicator_tag_ }; // No XER for RAB__Parameters_rAB__AsymmetryIndicator const int RAB__Parameters_rAB__AsymmetryIndicator_oer_ext_arr_[0] = {}; const int RAB__Parameters_rAB__AsymmetryIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_rAB__AsymmetryIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_rAB__AsymmetryIndicator_oer_ext_arr_, 0, RAB__Parameters_rAB__AsymmetryIndicator_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_rAB__AsymmetryIndicator_descr_ = { "@RANAP-IEs.RAB-Parameters.rAB-AsymmetryIndicator", &RAB__Parameters_rAB__AsymmetryIndicator_ber_, NULL, NULL, NULL, &RAB__AsymmetryIndicator_json_, &RAB__Parameters_rAB__AsymmetryIndicator_oer_, &RAB__AsymmetryIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_rAB__AsymmetryIndicator_default_coding(""); // No XER for RAB__Parameter__MaxBitrateList const TTCN_JSONdescriptor_t RAB__Parameter__MaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__Parameter__MaxBitrateList_oer_ext_arr_[0] = {}; const int RAB__Parameter__MaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__MaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameter__MaxBitrateList_oer_ext_arr_, 0, RAB__Parameter__MaxBitrateList_oer_p_}; static Per_Integer_Constraint RAB__Parameter__MaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t RAB__Parameter__MaxBitrateList_per_ = { &RAB__Parameter__MaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t RAB__Parameter__MaxBitrateList_descr_ = { "@RANAP-IEs.RAB-Parameter-MaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameter__MaxBitrateList_json_, &RAB__Parameter__MaxBitrateList_oer_, &RAB__Parameter__MaxBitrateList_per_, &RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAB__Parameter__MaxBitrateList_0 const int RAB__Parameter__MaxBitrateList_0_oer_ext_arr_[0] = {}; const int RAB__Parameter__MaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__MaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RAB__Parameter__MaxBitrateList_0_oer_ext_arr_, 0, RAB__Parameter__MaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameter__MaxBitrateList_0_descr_ = { "@RANAP-IEs.RAB-Parameter-MaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameter__MaxBitrateList_0_oer_, &MaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameter__MaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING RAB__Parameter__MaxBitrateList_default_coding(""); const ASN_Tag_t RAB__Parameters_maxBitrate_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RAB__Parameters_maxBitrate_ber_ = { 1u, RAB__Parameters_maxBitrate_tag_ }; // No XER for RAB__Parameters_maxBitrate const int RAB__Parameters_maxBitrate_oer_ext_arr_[0] = {}; const int RAB__Parameters_maxBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_maxBitrate_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_maxBitrate_oer_ext_arr_, 0, RAB__Parameters_maxBitrate_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_maxBitrate_descr_ = { "@RANAP-IEs.RAB-Parameters.maxBitrate", &RAB__Parameters_maxBitrate_ber_, NULL, NULL, NULL, &RAB__Parameter__MaxBitrateList_json_, &RAB__Parameters_maxBitrate_oer_, &RAB__Parameter__MaxBitrateList_per_, &RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_maxBitrate_default_coding(""); // No XER for DeliveryOrder const TTCN_JSONdescriptor_t DeliveryOrder_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DeliveryOrder_oer_ext_arr_[0] = {}; const int DeliveryOrder_oer_p_[0] = {}; const TTCN_OERdescriptor_t DeliveryOrder_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeliveryOrder_oer_ext_arr_, 0, DeliveryOrder_oer_p_}; static const Per_Constraint DeliveryOrder_per_cons_; const ASN_PERdescriptor_t DeliveryOrder_per_ = { &DeliveryOrder_per_cons_ }; const TTCN_Typedescriptor_t DeliveryOrder_descr_ = { "@RANAP-IEs.DeliveryOrder", &ENUMERATED_ber_, NULL, NULL, NULL, &DeliveryOrder_json_, &DeliveryOrder_oer_, &DeliveryOrder_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeliveryOrder_default_coding(""); const ASN_Tag_t RAB__Parameters_deliveryOrder_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t RAB__Parameters_deliveryOrder_ber_ = { 1u, RAB__Parameters_deliveryOrder_tag_ }; // No XER for RAB__Parameters_deliveryOrder const int RAB__Parameters_deliveryOrder_oer_ext_arr_[0] = {}; const int RAB__Parameters_deliveryOrder_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_deliveryOrder_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_deliveryOrder_oer_ext_arr_, 0, RAB__Parameters_deliveryOrder_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_deliveryOrder_descr_ = { "@RANAP-IEs.RAB-Parameters.deliveryOrder", &RAB__Parameters_deliveryOrder_ber_, NULL, NULL, NULL, &DeliveryOrder_json_, &RAB__Parameters_deliveryOrder_oer_, &DeliveryOrder_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_deliveryOrder_default_coding(""); // No XER for MaxSDU__Size const int MaxSDU__Size_oer_ext_arr_[0] = {}; const int MaxSDU__Size_oer_p_[0] = {}; const TTCN_OERdescriptor_t MaxSDU__Size_oer_ = { 2, FALSE, -1, FALSE, 0, 0, MaxSDU__Size_oer_ext_arr_, 0, MaxSDU__Size_oer_p_}; static Per_Integer_Constraint MaxSDU__Size_per_cons_(new INTEGER(0), new INTEGER(32768), FALSE); const ASN_PERdescriptor_t MaxSDU__Size_per_ = { &MaxSDU__Size_per_cons_ }; const TTCN_Typedescriptor_t MaxSDU__Size_descr_ = { "@RANAP-IEs.MaxSDU-Size", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &MaxSDU__Size_oer_, &MaxSDU__Size_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MaxSDU__Size_default_coding(""); const ASN_Tag_t RAB__Parameters_maxSDU__Size_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t RAB__Parameters_maxSDU__Size_ber_ = { 1u, RAB__Parameters_maxSDU__Size_tag_ }; // No XER for RAB__Parameters_maxSDU__Size const int RAB__Parameters_maxSDU__Size_oer_ext_arr_[0] = {}; const int RAB__Parameters_maxSDU__Size_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_maxSDU__Size_oer_ = { 2, FALSE, -1, FALSE, 0, 0, RAB__Parameters_maxSDU__Size_oer_ext_arr_, 0, RAB__Parameters_maxSDU__Size_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_maxSDU__Size_descr_ = { "@RANAP-IEs.RAB-Parameters.maxSDU-Size", &RAB__Parameters_maxSDU__Size_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameters_maxSDU__Size_oer_, &MaxSDU__Size_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_maxSDU__Size_default_coding(""); // No XER for SDU__Parameters const TTCN_JSONdescriptor_t SDU__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SDU__Parameters_oer_ext_arr_[0] = {}; const int SDU__Parameters_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__Parameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_oer_ext_arr_, 0, SDU__Parameters_oer_p_}; static Per_Integer_Constraint SDU__Parameters_per_cons_(new INTEGER(1), new INTEGER(7), FALSE); const ASN_PERdescriptor_t SDU__Parameters_per_ = { &SDU__Parameters_per_cons_ }; const TTCN_Typedescriptor_t SDU__Parameters_descr_ = { "@RANAP-IEs.SDU-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &SDU__Parameters_json_, &SDU__Parameters_oer_, &SDU__Parameters_per_, &SDU__Parameters_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t ResidualBitErrorRatio_mantissa_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t ResidualBitErrorRatio_mantissa_ber_ = { 1u, ResidualBitErrorRatio_mantissa_tag_ }; // No XER for ResidualBitErrorRatio_mantissa const int ResidualBitErrorRatio_mantissa_oer_ext_arr_[0] = {}; const int ResidualBitErrorRatio_mantissa_oer_p_[0] = {}; const TTCN_OERdescriptor_t ResidualBitErrorRatio_mantissa_oer_ = { 1, FALSE, -1, FALSE, 0, 0, ResidualBitErrorRatio_mantissa_oer_ext_arr_, 0, ResidualBitErrorRatio_mantissa_oer_p_}; static Per_Integer_Constraint ResidualBitErrorRatio_mantissa_per_cons_(new INTEGER(1), new INTEGER(9), FALSE); const ASN_PERdescriptor_t ResidualBitErrorRatio_mantissa_per_ = { &ResidualBitErrorRatio_mantissa_per_cons_ }; const TTCN_Typedescriptor_t ResidualBitErrorRatio_mantissa_descr_ = { "@RANAP-IEs.ResidualBitErrorRatio.mantissa", &ResidualBitErrorRatio_mantissa_ber_, NULL, NULL, NULL, &INTEGER_json_, &ResidualBitErrorRatio_mantissa_oer_, &ResidualBitErrorRatio_mantissa_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ResidualBitErrorRatio_mantissa_default_coding(""); const ASN_Tag_t ResidualBitErrorRatio_exponent_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t ResidualBitErrorRatio_exponent_ber_ = { 1u, ResidualBitErrorRatio_exponent_tag_ }; // No XER for ResidualBitErrorRatio_exponent const int ResidualBitErrorRatio_exponent_oer_ext_arr_[0] = {}; const int ResidualBitErrorRatio_exponent_oer_p_[0] = {}; const TTCN_OERdescriptor_t ResidualBitErrorRatio_exponent_oer_ = { 1, FALSE, -1, FALSE, 0, 0, ResidualBitErrorRatio_exponent_oer_ext_arr_, 0, ResidualBitErrorRatio_exponent_oer_p_}; static Per_Integer_Constraint ResidualBitErrorRatio_exponent_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t ResidualBitErrorRatio_exponent_per_ = { &ResidualBitErrorRatio_exponent_per_cons_ }; const TTCN_Typedescriptor_t ResidualBitErrorRatio_exponent_descr_ = { "@RANAP-IEs.ResidualBitErrorRatio.exponent", &ResidualBitErrorRatio_exponent_ber_, NULL, NULL, NULL, &INTEGER_json_, &ResidualBitErrorRatio_exponent_oer_, &ResidualBitErrorRatio_exponent_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ResidualBitErrorRatio_exponent_default_coding(""); // No XER for ResidualBitErrorRatio const TTCN_JSONdescriptor_t ResidualBitErrorRatio_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ResidualBitErrorRatio_oer_ext_arr_[0] = {}; const int ResidualBitErrorRatio_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t ResidualBitErrorRatio_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ResidualBitErrorRatio_oer_ext_arr_, 3, ResidualBitErrorRatio_oer_p_}; static const Per_Constraint ResidualBitErrorRatio_per_cons_; const ASN_PERdescriptor_t ResidualBitErrorRatio_per_ = { &ResidualBitErrorRatio_per_cons_ }; const TTCN_Typedescriptor_t ResidualBitErrorRatio_descr_ = { "@RANAP-IEs.ResidualBitErrorRatio", &SEQUENCE_ber_, NULL, NULL, NULL, &ResidualBitErrorRatio_json_, &ResidualBitErrorRatio_oer_, &ResidualBitErrorRatio_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_default_coding(""); const ASN_Tag_t ResidualBitErrorRatio_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t ResidualBitErrorRatio_iE__Extensions_ber_ = { 1u, ResidualBitErrorRatio_iE__Extensions_tag_ }; // No XER for ResidualBitErrorRatio_iE__Extensions const int ResidualBitErrorRatio_iE__Extensions_oer_ext_arr_[0] = {}; const int ResidualBitErrorRatio_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t ResidualBitErrorRatio_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ResidualBitErrorRatio_iE__Extensions_oer_ext_arr_, 0, ResidualBitErrorRatio_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t ResidualBitErrorRatio_iE__Extensions_descr_ = { "@RANAP-IEs.ResidualBitErrorRatio.iE-Extensions", &ResidualBitErrorRatio_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_json_, &ResidualBitErrorRatio_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ResidualBitErrorRatio_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING ResidualBitErrorRatio_default_coding(""); const ASN_Tag_t SDU__Parameters_0_residualBitErrorRatio_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SDU__Parameters_0_residualBitErrorRatio_ber_ = { 1u, SDU__Parameters_0_residualBitErrorRatio_tag_ }; // No XER for SDU__Parameters_0_residualBitErrorRatio const int SDU__Parameters_0_residualBitErrorRatio_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_residualBitErrorRatio_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SDU__Parameters_0_residualBitErrorRatio_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_0_residualBitErrorRatio_oer_ext_arr_, 3, SDU__Parameters_0_residualBitErrorRatio_oer_p_}; const TTCN_Typedescriptor_t SDU__Parameters_0_residualBitErrorRatio_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE.residualBitErrorRatio", &SDU__Parameters_0_residualBitErrorRatio_ber_, NULL, NULL, NULL, &ResidualBitErrorRatio_json_, &SDU__Parameters_0_residualBitErrorRatio_oer_, &ResidualBitErrorRatio_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__Parameters_0_residualBitErrorRatio_default_coding(""); // No XER for DeliveryOfErroneousSDU const TTCN_JSONdescriptor_t DeliveryOfErroneousSDU_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DeliveryOfErroneousSDU_oer_ext_arr_[0] = {}; const int DeliveryOfErroneousSDU_oer_p_[0] = {}; const TTCN_OERdescriptor_t DeliveryOfErroneousSDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeliveryOfErroneousSDU_oer_ext_arr_, 0, DeliveryOfErroneousSDU_oer_p_}; static const Per_Constraint DeliveryOfErroneousSDU_per_cons_; const ASN_PERdescriptor_t DeliveryOfErroneousSDU_per_ = { &DeliveryOfErroneousSDU_per_cons_ }; const TTCN_Typedescriptor_t DeliveryOfErroneousSDU_descr_ = { "@RANAP-IEs.DeliveryOfErroneousSDU", &ENUMERATED_ber_, NULL, NULL, NULL, &DeliveryOfErroneousSDU_json_, &DeliveryOfErroneousSDU_oer_, &DeliveryOfErroneousSDU_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeliveryOfErroneousSDU_default_coding(""); const ASN_Tag_t SDU__Parameters_0_deliveryOfErroneousSDU_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SDU__Parameters_0_deliveryOfErroneousSDU_ber_ = { 1u, SDU__Parameters_0_deliveryOfErroneousSDU_tag_ }; // No XER for SDU__Parameters_0_deliveryOfErroneousSDU const int SDU__Parameters_0_deliveryOfErroneousSDU_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_deliveryOfErroneousSDU_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__Parameters_0_deliveryOfErroneousSDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_0_deliveryOfErroneousSDU_oer_ext_arr_, 0, SDU__Parameters_0_deliveryOfErroneousSDU_oer_p_}; const TTCN_Typedescriptor_t SDU__Parameters_0_deliveryOfErroneousSDU_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE.deliveryOfErroneousSDU", &SDU__Parameters_0_deliveryOfErroneousSDU_ber_, NULL, NULL, NULL, &DeliveryOfErroneousSDU_json_, &SDU__Parameters_0_deliveryOfErroneousSDU_oer_, &DeliveryOfErroneousSDU_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__Parameters_0_deliveryOfErroneousSDU_default_coding(""); // No XER for SDU__Parameters_0 const TTCN_JSONdescriptor_t SDU__Parameters_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SDU__Parameters_0_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t SDU__Parameters_0_oer_ = { -1, TRUE, -1, TRUE, 5, 0, SDU__Parameters_0_oer_ext_arr_, 5, SDU__Parameters_0_oer_p_}; static const Per_Constraint SDU__Parameters_0_per_cons_; const ASN_PERdescriptor_t SDU__Parameters_0_per_ = { &SDU__Parameters_0_per_cons_ }; const TTCN_Typedescriptor_t SDU__Parameters_0_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &SDU__Parameters_0_json_, &SDU__Parameters_0_oer_, &SDU__Parameters_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SDU__ErrorRatio_mantissa_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SDU__ErrorRatio_mantissa_ber_ = { 1u, SDU__ErrorRatio_mantissa_tag_ }; // No XER for SDU__ErrorRatio_mantissa const int SDU__ErrorRatio_mantissa_oer_ext_arr_[0] = {}; const int SDU__ErrorRatio_mantissa_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__ErrorRatio_mantissa_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SDU__ErrorRatio_mantissa_oer_ext_arr_, 0, SDU__ErrorRatio_mantissa_oer_p_}; static Per_Integer_Constraint SDU__ErrorRatio_mantissa_per_cons_(new INTEGER(1), new INTEGER(9), FALSE); const ASN_PERdescriptor_t SDU__ErrorRatio_mantissa_per_ = { &SDU__ErrorRatio_mantissa_per_cons_ }; const TTCN_Typedescriptor_t SDU__ErrorRatio_mantissa_descr_ = { "@RANAP-IEs.SDU-ErrorRatio.mantissa", &SDU__ErrorRatio_mantissa_ber_, NULL, NULL, NULL, &INTEGER_json_, &SDU__ErrorRatio_mantissa_oer_, &SDU__ErrorRatio_mantissa_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__ErrorRatio_mantissa_default_coding(""); const ASN_Tag_t SDU__ErrorRatio_exponent_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SDU__ErrorRatio_exponent_ber_ = { 1u, SDU__ErrorRatio_exponent_tag_ }; // No XER for SDU__ErrorRatio_exponent const int SDU__ErrorRatio_exponent_oer_ext_arr_[0] = {}; const int SDU__ErrorRatio_exponent_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__ErrorRatio_exponent_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SDU__ErrorRatio_exponent_oer_ext_arr_, 0, SDU__ErrorRatio_exponent_oer_p_}; static Per_Integer_Constraint SDU__ErrorRatio_exponent_per_cons_(new INTEGER(1), new INTEGER(6), FALSE); const ASN_PERdescriptor_t SDU__ErrorRatio_exponent_per_ = { &SDU__ErrorRatio_exponent_per_cons_ }; const TTCN_Typedescriptor_t SDU__ErrorRatio_exponent_descr_ = { "@RANAP-IEs.SDU-ErrorRatio.exponent", &SDU__ErrorRatio_exponent_ber_, NULL, NULL, NULL, &INTEGER_json_, &SDU__ErrorRatio_exponent_oer_, &SDU__ErrorRatio_exponent_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__ErrorRatio_exponent_default_coding(""); // No XER for SDU__ErrorRatio const TTCN_JSONdescriptor_t SDU__ErrorRatio_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SDU__ErrorRatio_oer_ext_arr_[0] = {}; const int SDU__ErrorRatio_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SDU__ErrorRatio_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__ErrorRatio_oer_ext_arr_, 3, SDU__ErrorRatio_oer_p_}; static const Per_Constraint SDU__ErrorRatio_per_cons_; const ASN_PERdescriptor_t SDU__ErrorRatio_per_ = { &SDU__ErrorRatio_per_cons_ }; const TTCN_Typedescriptor_t SDU__ErrorRatio_descr_ = { "@RANAP-IEs.SDU-ErrorRatio", &SEQUENCE_ber_, NULL, NULL, NULL, &SDU__ErrorRatio_json_, &SDU__ErrorRatio_oer_, &SDU__ErrorRatio_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_default_coding(""); const ASN_Tag_t SDU__ErrorRatio_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SDU__ErrorRatio_iE__Extensions_ber_ = { 1u, SDU__ErrorRatio_iE__Extensions_tag_ }; // No XER for SDU__ErrorRatio_iE__Extensions const int SDU__ErrorRatio_iE__Extensions_oer_ext_arr_[0] = {}; const int SDU__ErrorRatio_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__ErrorRatio_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__ErrorRatio_iE__Extensions_oer_ext_arr_, 0, SDU__ErrorRatio_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SDU__ErrorRatio_iE__Extensions_descr_ = { "@RANAP-IEs.SDU-ErrorRatio.iE-Extensions", &SDU__ErrorRatio_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_json_, &SDU__ErrorRatio_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__ErrorRatio_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SDU__ErrorRatio_default_coding(""); const ASN_Tag_t SDU__Parameters_0_sDU__ErrorRatio_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SDU__Parameters_0_sDU__ErrorRatio_ber_ = { 1u, SDU__Parameters_0_sDU__ErrorRatio_tag_ }; // No XER for SDU__Parameters_0_sDU__ErrorRatio const int SDU__Parameters_0_sDU__ErrorRatio_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_sDU__ErrorRatio_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SDU__Parameters_0_sDU__ErrorRatio_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_0_sDU__ErrorRatio_oer_ext_arr_, 3, SDU__Parameters_0_sDU__ErrorRatio_oer_p_}; const TTCN_Typedescriptor_t SDU__Parameters_0_sDU__ErrorRatio_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE.sDU-ErrorRatio", &SDU__Parameters_0_sDU__ErrorRatio_ber_, NULL, NULL, NULL, &SDU__ErrorRatio_json_, &SDU__Parameters_0_sDU__ErrorRatio_oer_, &SDU__ErrorRatio_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__Parameters_0_sDU__ErrorRatio_default_coding(""); // No XER for SDU__FormatInformationParameters const TTCN_JSONdescriptor_t SDU__FormatInformationParameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SDU__FormatInformationParameters_oer_ext_arr_[0] = {}; const int SDU__FormatInformationParameters_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__FormatInformationParameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__FormatInformationParameters_oer_ext_arr_, 0, SDU__FormatInformationParameters_oer_p_}; static Per_Integer_Constraint SDU__FormatInformationParameters_per_cons_(new INTEGER(1), new INTEGER(64), FALSE); const ASN_PERdescriptor_t SDU__FormatInformationParameters_per_ = { &SDU__FormatInformationParameters_per_cons_ }; const TTCN_Typedescriptor_t SDU__FormatInformationParameters_descr_ = { "@RANAP-IEs.SDU-FormatInformationParameters", &SEQUENCE_ber_, NULL, NULL, NULL, &SDU__FormatInformationParameters_json_, &SDU__FormatInformationParameters_oer_, &SDU__FormatInformationParameters_per_, &SDU__FormatInformationParameters_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SDU__FormatInformationParameters_0 const TTCN_JSONdescriptor_t SDU__FormatInformationParameters_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SDU__FormatInformationParameters_0_oer_ext_arr_[0] = {}; const int SDU__FormatInformationParameters_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SDU__FormatInformationParameters_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, SDU__FormatInformationParameters_0_oer_ext_arr_, 3, SDU__FormatInformationParameters_0_oer_p_}; static const Per_Constraint SDU__FormatInformationParameters_0_per_cons_; const ASN_PERdescriptor_t SDU__FormatInformationParameters_0_per_ = { &SDU__FormatInformationParameters_0_per_cons_ }; const TTCN_Typedescriptor_t SDU__FormatInformationParameters_0_descr_ = { "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &SDU__FormatInformationParameters_0_json_, &SDU__FormatInformationParameters_0_oer_, &SDU__FormatInformationParameters_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SubflowSDU__Size const int SubflowSDU__Size_oer_ext_arr_[0] = {}; const int SubflowSDU__Size_oer_p_[0] = {}; const TTCN_OERdescriptor_t SubflowSDU__Size_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SubflowSDU__Size_oer_ext_arr_, 0, SubflowSDU__Size_oer_p_}; static Per_Integer_Constraint SubflowSDU__Size_per_cons_(new INTEGER(0), new INTEGER(4095), FALSE); const ASN_PERdescriptor_t SubflowSDU__Size_per_ = { &SubflowSDU__Size_per_cons_ }; const TTCN_Typedescriptor_t SubflowSDU__Size_descr_ = { "@RANAP-IEs.SubflowSDU-Size", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SubflowSDU__Size_oer_, &SubflowSDU__Size_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SubflowSDU__Size_default_coding(""); const ASN_Tag_t SDU__FormatInformationParameters_0_subflowSDU__Size_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SDU__FormatInformationParameters_0_subflowSDU__Size_ber_ = { 1u, SDU__FormatInformationParameters_0_subflowSDU__Size_tag_ }; // No XER for SDU__FormatInformationParameters_0_subflowSDU__Size const int SDU__FormatInformationParameters_0_subflowSDU__Size_oer_ext_arr_[0] = {}; const int SDU__FormatInformationParameters_0_subflowSDU__Size_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__FormatInformationParameters_0_subflowSDU__Size_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SDU__FormatInformationParameters_0_subflowSDU__Size_oer_ext_arr_, 0, SDU__FormatInformationParameters_0_subflowSDU__Size_oer_p_}; const TTCN_Typedescriptor_t SDU__FormatInformationParameters_0_subflowSDU__Size_descr_ = { "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE.subflowSDU-Size", &SDU__FormatInformationParameters_0_subflowSDU__Size_ber_, NULL, NULL, NULL, &INTEGER_json_, &SDU__FormatInformationParameters_0_subflowSDU__Size_oer_, &SubflowSDU__Size_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__FormatInformationParameters_0_subflowSDU__Size_default_coding(""); // No XER for RAB__SubflowCombinationBitRate const int RAB__SubflowCombinationBitRate_oer_ext_arr_[0] = {}; const int RAB__SubflowCombinationBitRate_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__SubflowCombinationBitRate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RAB__SubflowCombinationBitRate_oer_ext_arr_, 0, RAB__SubflowCombinationBitRate_oer_p_}; static Per_Integer_Constraint RAB__SubflowCombinationBitRate_per_cons_(new INTEGER(0), new INTEGER(16000000), FALSE); const ASN_PERdescriptor_t RAB__SubflowCombinationBitRate_per_ = { &RAB__SubflowCombinationBitRate_per_cons_ }; const TTCN_Typedescriptor_t RAB__SubflowCombinationBitRate_descr_ = { "@RANAP-IEs.RAB-SubflowCombinationBitRate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__SubflowCombinationBitRate_oer_, &RAB__SubflowCombinationBitRate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__SubflowCombinationBitRate_default_coding(""); const ASN_Tag_t SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_ber_ = { 1u, SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_tag_ }; // No XER for SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate const int SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_ext_arr_[0] = {}; const int SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_ext_arr_, 0, SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_p_}; const TTCN_Typedescriptor_t SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_ = { "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE.rAB-SubflowCombinationBitRate", &SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_ber_, NULL, NULL, NULL, &INTEGER_json_, &SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_oer_, &RAB__SubflowCombinationBitRate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_default_coding(""); const ASN_Tag_t SDU__FormatInformationParameters_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SDU__FormatInformationParameters_0_iE__Extensions_ber_ = { 1u, SDU__FormatInformationParameters_0_iE__Extensions_tag_ }; // No XER for SDU__FormatInformationParameters_0_iE__Extensions const int SDU__FormatInformationParameters_0_iE__Extensions_oer_ext_arr_[0] = {}; const int SDU__FormatInformationParameters_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__FormatInformationParameters_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__FormatInformationParameters_0_iE__Extensions_oer_ext_arr_, 0, SDU__FormatInformationParameters_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SDU__FormatInformationParameters_0_iE__Extensions_descr_ = { "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE.iE-Extensions", &SDU__FormatInformationParameters_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_json_, &SDU__FormatInformationParameters_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__FormatInformationParameters_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SDU__FormatInformationParameters_0_default_coding(""); UNIVERSAL_CHARSTRING SDU__FormatInformationParameters_default_coding(""); const ASN_Tag_t SDU__Parameters_0_sDU__FormatInformationParameters_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t SDU__Parameters_0_sDU__FormatInformationParameters_ber_ = { 1u, SDU__Parameters_0_sDU__FormatInformationParameters_tag_ }; // No XER for SDU__Parameters_0_sDU__FormatInformationParameters const int SDU__Parameters_0_sDU__FormatInformationParameters_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_sDU__FormatInformationParameters_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__Parameters_0_sDU__FormatInformationParameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_0_sDU__FormatInformationParameters_oer_ext_arr_, 0, SDU__Parameters_0_sDU__FormatInformationParameters_oer_p_}; const TTCN_Typedescriptor_t SDU__Parameters_0_sDU__FormatInformationParameters_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE.sDU-FormatInformationParameters", &SDU__Parameters_0_sDU__FormatInformationParameters_ber_, NULL, NULL, NULL, &SDU__FormatInformationParameters_json_, &SDU__Parameters_0_sDU__FormatInformationParameters_oer_, &SDU__FormatInformationParameters_per_, &SDU__FormatInformationParameters_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__Parameters_0_sDU__FormatInformationParameters_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_default_coding(""); const ASN_Tag_t SDU__Parameters_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t SDU__Parameters_0_iE__Extensions_ber_ = { 1u, SDU__Parameters_0_iE__Extensions_tag_ }; // No XER for SDU__Parameters_0_iE__Extensions const int SDU__Parameters_0_iE__Extensions_oer_ext_arr_[0] = {}; const int SDU__Parameters_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SDU__Parameters_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SDU__Parameters_0_iE__Extensions_oer_ext_arr_, 0, SDU__Parameters_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SDU__Parameters_0_iE__Extensions_descr_ = { "@RANAP-IEs.SDU-Parameters.SEQUENCE.iE-Extensions", &SDU__Parameters_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_json_, &SDU__Parameters_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SDU__Parameters_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SDU__Parameters_0_default_coding(""); UNIVERSAL_CHARSTRING SDU__Parameters_default_coding(""); const ASN_Tag_t RAB__Parameters_sDU__Parameters_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t RAB__Parameters_sDU__Parameters_ber_ = { 1u, RAB__Parameters_sDU__Parameters_tag_ }; // No XER for RAB__Parameters_sDU__Parameters const int RAB__Parameters_sDU__Parameters_oer_ext_arr_[0] = {}; const int RAB__Parameters_sDU__Parameters_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_sDU__Parameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_sDU__Parameters_oer_ext_arr_, 0, RAB__Parameters_sDU__Parameters_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_sDU__Parameters_descr_ = { "@RANAP-IEs.RAB-Parameters.sDU-Parameters", &RAB__Parameters_sDU__Parameters_ber_, NULL, NULL, NULL, &SDU__Parameters_json_, &RAB__Parameters_sDU__Parameters_oer_, &SDU__Parameters_per_, &SDU__Parameters_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_sDU__Parameters_default_coding(""); // No XER for RAB__Parameters const TTCN_JSONdescriptor_t RAB__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__Parameters_oer_ext_arr_[0] = {}; const int RAB__Parameters_oer_p_[13] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; const TTCN_OERdescriptor_t RAB__Parameters_oer_ = { -1, TRUE, -1, TRUE, 13, 0, RAB__Parameters_oer_ext_arr_, 13, RAB__Parameters_oer_p_}; static const Per_Constraint RAB__Parameters_per_cons_; const ASN_PERdescriptor_t RAB__Parameters_per_ = { &RAB__Parameters_per_cons_ }; const TTCN_Typedescriptor_t RAB__Parameters_descr_ = { "@RANAP-IEs.RAB-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameters_json_, &RAB__Parameters_oer_, &RAB__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAB__Parameter__GuaranteedBitrateList const TTCN_JSONdescriptor_t RAB__Parameter__GuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_[0] = {}; const int RAB__Parameter__GuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__GuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_, 0, RAB__Parameter__GuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint RAB__Parameter__GuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t RAB__Parameter__GuaranteedBitrateList_per_ = { &RAB__Parameter__GuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t RAB__Parameter__GuaranteedBitrateList_descr_ = { "@RANAP-IEs.RAB-Parameter-GuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameter__GuaranteedBitrateList_json_, &RAB__Parameter__GuaranteedBitrateList_oer_, &RAB__Parameter__GuaranteedBitrateList_per_, &RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAB__Parameter__GuaranteedBitrateList_0 const int RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int RAB__Parameter__GuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__GuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_, 0, RAB__Parameter__GuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameter__GuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.RAB-Parameter-GuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameter__GuaranteedBitrateList_0_oer_, &GuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameter__GuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING RAB__Parameter__GuaranteedBitrateList_default_coding(""); const ASN_Tag_t RAB__Parameters_guaranteedBitRate_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t RAB__Parameters_guaranteedBitRate_ber_ = { 1u, RAB__Parameters_guaranteedBitRate_tag_ }; // No XER for RAB__Parameters_guaranteedBitRate const int RAB__Parameters_guaranteedBitRate_oer_ext_arr_[0] = {}; const int RAB__Parameters_guaranteedBitRate_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_guaranteedBitRate_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_guaranteedBitRate_oer_ext_arr_, 0, RAB__Parameters_guaranteedBitRate_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_guaranteedBitRate_descr_ = { "@RANAP-IEs.RAB-Parameters.guaranteedBitRate", &RAB__Parameters_guaranteedBitRate_ber_, NULL, NULL, NULL, &RAB__Parameter__GuaranteedBitrateList_json_, &RAB__Parameters_guaranteedBitRate_oer_, &RAB__Parameter__GuaranteedBitrateList_per_, &RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_guaranteedBitRate_default_coding(""); // No XER for TransferDelay const int TransferDelay_oer_ext_arr_[0] = {}; const int TransferDelay_oer_p_[0] = {}; const TTCN_OERdescriptor_t TransferDelay_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TransferDelay_oer_ext_arr_, 0, TransferDelay_oer_p_}; static Per_Integer_Constraint TransferDelay_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t TransferDelay_per_ = { &TransferDelay_per_cons_ }; const TTCN_Typedescriptor_t TransferDelay_descr_ = { "@RANAP-IEs.TransferDelay", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TransferDelay_oer_, &TransferDelay_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TransferDelay_default_coding(""); const ASN_Tag_t RAB__Parameters_transferDelay_tag_[] = { { ASN_TAG_CONT, 7u }}; const ASN_BERdescriptor_t RAB__Parameters_transferDelay_ber_ = { 1u, RAB__Parameters_transferDelay_tag_ }; // No XER for RAB__Parameters_transferDelay const int RAB__Parameters_transferDelay_oer_ext_arr_[0] = {}; const int RAB__Parameters_transferDelay_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_transferDelay_oer_ = { 2, FALSE, -1, FALSE, 0, 0, RAB__Parameters_transferDelay_oer_ext_arr_, 0, RAB__Parameters_transferDelay_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_transferDelay_descr_ = { "@RANAP-IEs.RAB-Parameters.transferDelay", &RAB__Parameters_transferDelay_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameters_transferDelay_oer_, &TransferDelay_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_transferDelay_default_coding(""); // No XER for TrafficHandlingPriority const int TrafficHandlingPriority_oer_ext_arr_[0] = {}; const int TrafficHandlingPriority_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrafficHandlingPriority_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrafficHandlingPriority_oer_ext_arr_, 0, TrafficHandlingPriority_oer_p_}; static Per_Integer_Constraint TrafficHandlingPriority_per_cons_(new INTEGER(0), new INTEGER(15), FALSE); const ASN_PERdescriptor_t TrafficHandlingPriority_per_ = { &TrafficHandlingPriority_per_cons_ }; const TTCN_Typedescriptor_t TrafficHandlingPriority_descr_ = { "@RANAP-IEs.TrafficHandlingPriority", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrafficHandlingPriority_oer_, &TrafficHandlingPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrafficHandlingPriority_default_coding(""); const ASN_Tag_t RAB__Parameters_trafficHandlingPriority_tag_[] = { { ASN_TAG_CONT, 8u }}; const ASN_BERdescriptor_t RAB__Parameters_trafficHandlingPriority_ber_ = { 1u, RAB__Parameters_trafficHandlingPriority_tag_ }; // No XER for RAB__Parameters_trafficHandlingPriority const int RAB__Parameters_trafficHandlingPriority_oer_ext_arr_[0] = {}; const int RAB__Parameters_trafficHandlingPriority_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_trafficHandlingPriority_oer_ = { 1, FALSE, -1, FALSE, 0, 0, RAB__Parameters_trafficHandlingPriority_oer_ext_arr_, 0, RAB__Parameters_trafficHandlingPriority_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_trafficHandlingPriority_descr_ = { "@RANAP-IEs.RAB-Parameters.trafficHandlingPriority", &RAB__Parameters_trafficHandlingPriority_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameters_trafficHandlingPriority_oer_, &TrafficHandlingPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_trafficHandlingPriority_default_coding(""); const ASN_Tag_t RAB__Parameters_allocationOrRetentionPriority_tag_[] = { { ASN_TAG_CONT, 9u }}; const ASN_BERdescriptor_t RAB__Parameters_allocationOrRetentionPriority_ber_ = { 1u, RAB__Parameters_allocationOrRetentionPriority_tag_ }; // No XER for RAB__Parameters_allocationOrRetentionPriority const int RAB__Parameters_allocationOrRetentionPriority_oer_ext_arr_[0] = {}; const int RAB__Parameters_allocationOrRetentionPriority_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t RAB__Parameters_allocationOrRetentionPriority_oer_ = { -1, TRUE, -1, TRUE, 5, 0, RAB__Parameters_allocationOrRetentionPriority_oer_ext_arr_, 5, RAB__Parameters_allocationOrRetentionPriority_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_allocationOrRetentionPriority_descr_ = { "@RANAP-IEs.RAB-Parameters.allocationOrRetentionPriority", &RAB__Parameters_allocationOrRetentionPriority_ber_, NULL, NULL, NULL, &AllocationOrRetentionPriority_json_, &RAB__Parameters_allocationOrRetentionPriority_oer_, &AllocationOrRetentionPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_allocationOrRetentionPriority_default_coding(""); // No XER for SourceStatisticsDescriptor const TTCN_JSONdescriptor_t SourceStatisticsDescriptor_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceStatisticsDescriptor_oer_ext_arr_[0] = {}; const int SourceStatisticsDescriptor_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceStatisticsDescriptor_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceStatisticsDescriptor_oer_ext_arr_, 0, SourceStatisticsDescriptor_oer_p_}; static const Per_Constraint SourceStatisticsDescriptor_per_cons_; const ASN_PERdescriptor_t SourceStatisticsDescriptor_per_ = { &SourceStatisticsDescriptor_per_cons_ }; const TTCN_Typedescriptor_t SourceStatisticsDescriptor_descr_ = { "@RANAP-IEs.SourceStatisticsDescriptor", &ENUMERATED_ber_, NULL, NULL, NULL, &SourceStatisticsDescriptor_json_, &SourceStatisticsDescriptor_oer_, &SourceStatisticsDescriptor_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceStatisticsDescriptor_default_coding(""); const ASN_Tag_t RAB__Parameters_sourceStatisticsDescriptor_tag_[] = { { ASN_TAG_CONT, 10u }}; const ASN_BERdescriptor_t RAB__Parameters_sourceStatisticsDescriptor_ber_ = { 1u, RAB__Parameters_sourceStatisticsDescriptor_tag_ }; // No XER for RAB__Parameters_sourceStatisticsDescriptor const int RAB__Parameters_sourceStatisticsDescriptor_oer_ext_arr_[0] = {}; const int RAB__Parameters_sourceStatisticsDescriptor_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_sourceStatisticsDescriptor_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_sourceStatisticsDescriptor_oer_ext_arr_, 0, RAB__Parameters_sourceStatisticsDescriptor_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_sourceStatisticsDescriptor_descr_ = { "@RANAP-IEs.RAB-Parameters.sourceStatisticsDescriptor", &RAB__Parameters_sourceStatisticsDescriptor_ber_, NULL, NULL, NULL, &SourceStatisticsDescriptor_json_, &RAB__Parameters_sourceStatisticsDescriptor_oer_, &SourceStatisticsDescriptor_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_sourceStatisticsDescriptor_default_coding(""); // No XER for RelocationRequirement const TTCN_JSONdescriptor_t RelocationRequirement_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RelocationRequirement_oer_ext_arr_[0] = {}; const int RelocationRequirement_oer_p_[0] = {}; const TTCN_OERdescriptor_t RelocationRequirement_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RelocationRequirement_oer_ext_arr_, 0, RelocationRequirement_oer_p_}; static const Per_Constraint RelocationRequirement_per_cons_; const ASN_PERdescriptor_t RelocationRequirement_per_ = { &RelocationRequirement_per_cons_ }; const TTCN_Typedescriptor_t RelocationRequirement_descr_ = { "@RANAP-IEs.RelocationRequirement", &ENUMERATED_ber_, NULL, NULL, NULL, &RelocationRequirement_json_, &RelocationRequirement_oer_, &RelocationRequirement_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RelocationRequirement_default_coding(""); const ASN_Tag_t RAB__Parameters_relocationRequirement_tag_[] = { { ASN_TAG_CONT, 11u }}; const ASN_BERdescriptor_t RAB__Parameters_relocationRequirement_ber_ = { 1u, RAB__Parameters_relocationRequirement_tag_ }; // No XER for RAB__Parameters_relocationRequirement const int RAB__Parameters_relocationRequirement_oer_ext_arr_[0] = {}; const int RAB__Parameters_relocationRequirement_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_relocationRequirement_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_relocationRequirement_oer_ext_arr_, 0, RAB__Parameters_relocationRequirement_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_relocationRequirement_descr_ = { "@RANAP-IEs.RAB-Parameters.relocationRequirement", &RAB__Parameters_relocationRequirement_ber_, NULL, NULL, NULL, &RelocationRequirement_json_, &RAB__Parameters_relocationRequirement_oer_, &RelocationRequirement_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_relocationRequirement_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SignallingIndication const TTCN_JSONdescriptor_t SignallingIndication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SignallingIndication_oer_ext_arr_[0] = {}; const int SignallingIndication_oer_p_[0] = {}; const TTCN_OERdescriptor_t SignallingIndication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SignallingIndication_oer_ext_arr_, 0, SignallingIndication_oer_p_}; static const Per_Constraint SignallingIndication_per_cons_; const ASN_PERdescriptor_t SignallingIndication_per_ = { &SignallingIndication_per_cons_ }; const TTCN_Typedescriptor_t SignallingIndication_descr_ = { "@RANAP-IEs.SignallingIndication", &ENUMERATED_ber_, NULL, NULL, NULL, &SignallingIndication_json_, &SignallingIndication_oer_, &SignallingIndication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SignallingIndication_default_coding(""); RANAP__CommonDataTypes::Criticality const_RAB__Parameters__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& RAB__Parameters__ExtIEs_1_criticality = const_RAB__Parameters__ExtIEs_1_criticality; INTEGER const_RAB__Parameters__ExtIEs_1_id; const INTEGER& RAB__Parameters__ExtIEs_1_id = const_RAB__Parameters__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_RAB__Parameters__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& RAB__Parameters__ExtIEs_1_presence = const_RAB__Parameters__ExtIEs_1_presence; // No XER for RAB__Parameter__ExtendedGuaranteedBitrateList const TTCN_JSONdescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_[0] = {}; const int RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_, 0, RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_per_ = { &RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_descr_ = { "@RANAP-IEs.RAB-Parameter-ExtendedGuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameter__ExtendedGuaranteedBitrateList_json_, &RAB__Parameter__ExtendedGuaranteedBitrateList_oer_, &RAB__Parameter__ExtendedGuaranteedBitrateList_per_, &RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ExtendedGuaranteedBitrate const int ExtendedGuaranteedBitrate_oer_ext_arr_[0] = {}; const int ExtendedGuaranteedBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedGuaranteedBitrate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, ExtendedGuaranteedBitrate_oer_ext_arr_, 0, ExtendedGuaranteedBitrate_oer_p_}; static Per_Integer_Constraint ExtendedGuaranteedBitrate_per_cons_(new INTEGER(16000001), new INTEGER(256000000), FALSE); const ASN_PERdescriptor_t ExtendedGuaranteedBitrate_per_ = { &ExtendedGuaranteedBitrate_per_cons_ }; const TTCN_Typedescriptor_t ExtendedGuaranteedBitrate_descr_ = { "@RANAP-IEs.ExtendedGuaranteedBitrate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ExtendedGuaranteedBitrate_oer_, &ExtendedGuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedGuaranteedBitrate_default_coding(""); // No XER for RAB__Parameter__ExtendedGuaranteedBitrateList_0 const int RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_, 0, RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.RAB-Parameter-ExtendedGuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_, &ExtendedGuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameter__ExtendedGuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING RAB__Parameter__ExtendedGuaranteedBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_RAB__Parameters__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& RAB__Parameters__ExtIEs_2_criticality = const_RAB__Parameters__ExtIEs_2_criticality; INTEGER const_RAB__Parameters__ExtIEs_2_id; const INTEGER& RAB__Parameters__ExtIEs_2_id = const_RAB__Parameters__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_RAB__Parameters__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& RAB__Parameters__ExtIEs_2_presence = const_RAB__Parameters__ExtIEs_2_presence; // No XER for RAB__Parameter__ExtendedMaxBitrateList const TTCN_JSONdescriptor_t RAB__Parameter__ExtendedMaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_[0] = {}; const int RAB__Parameter__ExtendedMaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__ExtendedMaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_, 0, RAB__Parameter__ExtendedMaxBitrateList_oer_p_}; static Per_Integer_Constraint RAB__Parameter__ExtendedMaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t RAB__Parameter__ExtendedMaxBitrateList_per_ = { &RAB__Parameter__ExtendedMaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t RAB__Parameter__ExtendedMaxBitrateList_descr_ = { "@RANAP-IEs.RAB-Parameter-ExtendedMaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameter__ExtendedMaxBitrateList_json_, &RAB__Parameter__ExtendedMaxBitrateList_oer_, &RAB__Parameter__ExtendedMaxBitrateList_per_, &RAB__Parameter__ExtendedMaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ExtendedMaxBitrate const int ExtendedMaxBitrate_oer_ext_arr_[0] = {}; const int ExtendedMaxBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedMaxBitrate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, ExtendedMaxBitrate_oer_ext_arr_, 0, ExtendedMaxBitrate_oer_p_}; static Per_Integer_Constraint ExtendedMaxBitrate_per_cons_(new INTEGER(16000001), new INTEGER(256000000), FALSE); const ASN_PERdescriptor_t ExtendedMaxBitrate_per_ = { &ExtendedMaxBitrate_per_cons_ }; const TTCN_Typedescriptor_t ExtendedMaxBitrate_descr_ = { "@RANAP-IEs.ExtendedMaxBitrate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ExtendedMaxBitrate_oer_, &ExtendedMaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedMaxBitrate_default_coding(""); // No XER for RAB__Parameter__ExtendedMaxBitrateList_0 const int RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_[0] = {}; const int RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameter__ExtendedMaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_, 0, RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameter__ExtendedMaxBitrateList_0_descr_ = { "@RANAP-IEs.RAB-Parameter-ExtendedMaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RAB__Parameter__ExtendedMaxBitrateList_0_oer_, &ExtendedMaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameter__ExtendedMaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING RAB__Parameter__ExtendedMaxBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_RAB__Parameters__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& RAB__Parameters__ExtIEs_3_criticality = const_RAB__Parameters__ExtIEs_3_criticality; INTEGER const_RAB__Parameters__ExtIEs_3_id; const INTEGER& RAB__Parameters__ExtIEs_3_id = const_RAB__Parameters__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_RAB__Parameters__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& RAB__Parameters__ExtIEs_3_presence = const_RAB__Parameters__ExtIEs_3_presence; // No XER for SupportedRAB__ParameterBitrateList const TTCN_JSONdescriptor_t SupportedRAB__ParameterBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SupportedRAB__ParameterBitrateList_oer_ext_arr_[0] = {}; const int SupportedRAB__ParameterBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t SupportedRAB__ParameterBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SupportedRAB__ParameterBitrateList_oer_ext_arr_, 0, SupportedRAB__ParameterBitrateList_oer_p_}; static Per_Integer_Constraint SupportedRAB__ParameterBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t SupportedRAB__ParameterBitrateList_per_ = { &SupportedRAB__ParameterBitrateList_per_cons_ }; const TTCN_Typedescriptor_t SupportedRAB__ParameterBitrateList_descr_ = { "@RANAP-IEs.SupportedRAB-ParameterBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &SupportedRAB__ParameterBitrateList_json_, &SupportedRAB__ParameterBitrateList_oer_, &SupportedRAB__ParameterBitrateList_per_, &SupportedRAB__ParameterBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SupportedBitrate const int SupportedBitrate_oer_ext_arr_[0] = {}; const int SupportedBitrate_oer_p_[0] = {}; const TTCN_OERdescriptor_t SupportedBitrate_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SupportedBitrate_oer_ext_arr_, 0, SupportedBitrate_oer_p_}; static Per_Integer_Constraint SupportedBitrate_per_cons_(new INTEGER(1), new INTEGER(1000000000), TRUE); const ASN_PERdescriptor_t SupportedBitrate_per_ = { &SupportedBitrate_per_cons_ }; const TTCN_Typedescriptor_t SupportedBitrate_descr_ = { "@RANAP-IEs.SupportedBitrate", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SupportedBitrate_oer_, &SupportedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SupportedBitrate_default_coding(""); // No XER for SupportedRAB__ParameterBitrateList_0 const int SupportedRAB__ParameterBitrateList_0_oer_ext_arr_[0] = {}; const int SupportedRAB__ParameterBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t SupportedRAB__ParameterBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SupportedRAB__ParameterBitrateList_0_oer_ext_arr_, 0, SupportedRAB__ParameterBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t SupportedRAB__ParameterBitrateList_0_descr_ = { "@RANAP-IEs.SupportedRAB-ParameterBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SupportedRAB__ParameterBitrateList_0_oer_, &SupportedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SupportedRAB__ParameterBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING SupportedRAB__ParameterBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_RAB__Parameters__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& RAB__Parameters__ExtIEs_4_criticality = const_RAB__Parameters__ExtIEs_4_criticality; INTEGER const_RAB__Parameters__ExtIEs_4_id; const INTEGER& RAB__Parameters__ExtIEs_4_id = const_RAB__Parameters__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_RAB__Parameters__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& RAB__Parameters__ExtIEs_4_presence = const_RAB__Parameters__ExtIEs_4_presence; RANAP__CommonDataTypes::Criticality const_RAB__Parameters__ExtIEs_5_criticality; const RANAP__CommonDataTypes::Criticality& RAB__Parameters__ExtIEs_5_criticality = const_RAB__Parameters__ExtIEs_5_criticality; INTEGER const_RAB__Parameters__ExtIEs_5_id; const INTEGER& RAB__Parameters__ExtIEs_5_id = const_RAB__Parameters__ExtIEs_5_id; RANAP__CommonDataTypes::Presence const_RAB__Parameters__ExtIEs_5_presence; const RANAP__CommonDataTypes::Presence& RAB__Parameters__ExtIEs_5_presence = const_RAB__Parameters__ExtIEs_5_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_default_coding(""); const ASN_Tag_t RAB__Parameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 12u }}; const ASN_BERdescriptor_t RAB__Parameters_iE__Extensions_ber_ = { 1u, RAB__Parameters_iE__Extensions_tag_ }; // No XER for RAB__Parameters_iE__Extensions const int RAB__Parameters_iE__Extensions_oer_ext_arr_[0] = {}; const int RAB__Parameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__Parameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__Parameters_iE__Extensions_oer_ext_arr_, 0, RAB__Parameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RAB__Parameters_iE__Extensions_descr_ = { "@RANAP-IEs.RAB-Parameters.iE-Extensions", &RAB__Parameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_json_, &RAB__Parameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__Parameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RAB__Parameters_default_coding(""); // No XER for Alt__RAB__Parameters__ExtIEs_1_Extension const int Alt__RAB__Parameters__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters__ExtIEs_1_Extension_oer_p_[13] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; const TTCN_OERdescriptor_t Alt__RAB__Parameters__ExtIEs_1_Extension_oer_ = { -1, TRUE, -1, TRUE, 13, 0, Alt__RAB__Parameters__ExtIEs_1_Extension_oer_ext_arr_, 13, Alt__RAB__Parameters__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters-ExtIEs.1.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__Parameters_json_, &Alt__RAB__Parameters__ExtIEs_1_Extension_oer_, &RAB__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Alt__RAB__Parameters__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& Alt__RAB__Parameters__ExtIEs_1_criticality = const_Alt__RAB__Parameters__ExtIEs_1_criticality; INTEGER const_Alt__RAB__Parameters__ExtIEs_1_id; const INTEGER& Alt__RAB__Parameters__ExtIEs_1_id = const_Alt__RAB__Parameters__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_Alt__RAB__Parameters__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& Alt__RAB__Parameters__ExtIEs_1_presence = const_Alt__RAB__Parameters__ExtIEs_1_presence; const ASN_Tag_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_ber_ = { 1u, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.altExtendedGuaranteedBitrateType", &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateType_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_oer_, &Alt__RAB__Parameter__GuaranteedBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_ext_arr_, 2, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_per_ = { &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_oer_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__ExtendedGuaranteedBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrates_per_ = { &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_oer_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_per_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrateList const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_per_ = { &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_per_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0 const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_, &ExtendedGuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_ber_ = { 1u, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_tag_ }; // No XER for Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf.altExtendedGuaranteedBitrates", &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_json_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_oer_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrates_per_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_default_coding(""); // No XER for Alt__RAB__Parameters__ExtIEs_2_Extension const int Alt__RAB__Parameters__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters__ExtIEs_2_Extension_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameters__ExtIEs_2_Extension_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameters__ExtIEs_2_Extension_oer_ext_arr_, 2, Alt__RAB__Parameters__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters-ExtIEs.2.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_json_, &Alt__RAB__Parameters__ExtIEs_2_Extension_oer_, &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Alt__RAB__Parameters__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& Alt__RAB__Parameters__ExtIEs_2_criticality = const_Alt__RAB__Parameters__ExtIEs_2_criticality; INTEGER const_Alt__RAB__Parameters__ExtIEs_2_id; const INTEGER& Alt__RAB__Parameters__ExtIEs_2_id = const_Alt__RAB__Parameters__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_Alt__RAB__Parameters__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& Alt__RAB__Parameters__ExtIEs_2_presence = const_Alt__RAB__Parameters__ExtIEs_2_presence; const ASN_Tag_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_ber_ = { 1u, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf.altExtendedMaxBitrateType", &Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateType_json_, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_oer_, &Alt__RAB__Parameter__MaxBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__ExtendedMaxBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_ext_arr_, 2, Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__ExtendedMaxBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_per_ = { &Alt__RAB__Parameter__ExtendedMaxBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_json_, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_oer_, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedMaxBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedMaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedMaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedMaxBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__ExtendedMaxBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrates_per_ = { &Alt__RAB__Parameter__ExtendedMaxBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedMaxBitrates_json_, &Alt__RAB__Parameter__ExtendedMaxBitrates_oer_, &Alt__RAB__Parameter__ExtendedMaxBitrates_per_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedMaxBitrateList const TTCN_JSONdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__ExtendedMaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_per_ = { &Alt__RAB__Parameter__ExtendedMaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedMaxBitrateList_json_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_oer_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_per_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__ExtendedMaxBitrateList_0 const int Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateList_0_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_0_oer_, &ExtendedMaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrateList_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_ber_ = { 1u, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_tag_ }; // No XER for Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf.altExtendedMaxBitrates", &Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedMaxBitrates_json_, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_oer_, &Alt__RAB__Parameter__ExtendedMaxBitrates_per_, &Alt__RAB__Parameter__ExtendedMaxBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__ExtendedMaxBitrateInf_default_coding(""); // No XER for Alt__RAB__Parameters__ExtIEs_3_Extension const int Alt__RAB__Parameters__ExtIEs_3_Extension_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters__ExtIEs_3_Extension_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Alt__RAB__Parameters__ExtIEs_3_Extension_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Alt__RAB__Parameters__ExtIEs_3_Extension_oer_ext_arr_, 2, Alt__RAB__Parameters__ExtIEs_3_Extension_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters__ExtIEs_3_Extension_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters-ExtIEs.3.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_json_, &Alt__RAB__Parameters__ExtIEs_3_Extension_oer_, &Alt__RAB__Parameter__ExtendedMaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Alt__RAB__Parameters__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& Alt__RAB__Parameters__ExtIEs_3_criticality = const_Alt__RAB__Parameters__ExtIEs_3_criticality; INTEGER const_Alt__RAB__Parameters__ExtIEs_3_id; const INTEGER& Alt__RAB__Parameters__ExtIEs_3_id = const_Alt__RAB__Parameters__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_Alt__RAB__Parameters__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& Alt__RAB__Parameters__ExtIEs_3_presence = const_Alt__RAB__Parameters__ExtIEs_3_presence; const ASN_Tag_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_ber_ = { 1u, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType const int Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf.altSupportedMaxBitrateType", &Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__MaxBitrateType_json_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_oer_, &Alt__RAB__Parameter__MaxBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__SupportedMaxBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_ext_arr_, 3, Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__SupportedMaxBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_per_ = { &Alt__RAB__Parameter__SupportedMaxBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedMaxBitrateInf_json_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_oer_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__SupportedMaxBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__SupportedMaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedMaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedMaxBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__SupportedMaxBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrates_per_ = { &Alt__RAB__Parameter__SupportedMaxBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedMaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedMaxBitrates_json_, &Alt__RAB__Parameter__SupportedMaxBitrates_oer_, &Alt__RAB__Parameter__SupportedMaxBitrates_per_, &SupportedRAB__ParameterBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_ber_ = { 1u, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_tag_ }; // No XER for Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates const int Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf.altSupportedMaxBitrates", &Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedMaxBitrates_json_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_oer_, &Alt__RAB__Parameter__SupportedMaxBitrates_per_, &SupportedRAB__ParameterBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_ber_ = { 1u, Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_tag_ }; // No XER for Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions const int Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf.iE-Extensions", &Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_json_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedMaxBitrateInf_default_coding(""); // No XER for Alt__RAB__Parameters__ExtIEs_4_Extension const int Alt__RAB__Parameters__ExtIEs_4_Extension_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters__ExtIEs_4_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Alt__RAB__Parameters__ExtIEs_4_Extension_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Alt__RAB__Parameters__ExtIEs_4_Extension_oer_ext_arr_, 3, Alt__RAB__Parameters__ExtIEs_4_Extension_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters__ExtIEs_4_Extension_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters-ExtIEs.4.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedMaxBitrateInf_json_, &Alt__RAB__Parameters__ExtIEs_4_Extension_oer_, &Alt__RAB__Parameter__SupportedMaxBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Alt__RAB__Parameters__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& Alt__RAB__Parameters__ExtIEs_4_criticality = const_Alt__RAB__Parameters__ExtIEs_4_criticality; INTEGER const_Alt__RAB__Parameters__ExtIEs_4_id; const INTEGER& Alt__RAB__Parameters__ExtIEs_4_id = const_Alt__RAB__Parameters__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_Alt__RAB__Parameters__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& Alt__RAB__Parameters__ExtIEs_4_presence = const_Alt__RAB__Parameters__ExtIEs_4_presence; const ASN_Tag_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_ber_ = { 1u, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_tag_ }; // No XER for Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.altSupportedGuaranteedBitrateType", &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__GuaranteedBitrateType_json_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_oer_, &Alt__RAB__Parameter__GuaranteedBitrateType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_default_coding(""); // No XER for Alt__RAB__Parameter__SupportedGuaranteedBitrateInf const TTCN_JSONdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_ext_arr_, 3, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_p_}; static const Per_Constraint Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_per_cons_; const ASN_PERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_per_ = { &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_json_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_oer_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Alt__RAB__Parameter__SupportedGuaranteedBitrates const TTCN_JSONdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_p_}; static Per_Integer_Constraint Alt__RAB__Parameter__SupportedGuaranteedBitrates_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrates_per_ = { &Alt__RAB__Parameter__SupportedGuaranteedBitrates_per_cons_ }; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedGuaranteedBitrates_json_, &Alt__RAB__Parameter__SupportedGuaranteedBitrates_oer_, &Alt__RAB__Parameter__SupportedGuaranteedBitrates_per_, &SupportedRAB__ParameterBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrates_0_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrates_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_ber_ = { 1u, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_tag_ }; // No XER for Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.altSupportedGuaranteedBitrates", &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedGuaranteedBitrates_json_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_oer_, &Alt__RAB__Parameter__SupportedGuaranteedBitrates_per_, &SupportedRAB__ParameterBitrateList_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_default_coding(""); const ASN_Tag_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_ber_ = { 1u, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_tag_ }; // No XER for Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_ext_arr_, 0, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_ = { "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf.iE-Extensions", &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_json_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_default_coding(""); // No XER for Alt__RAB__Parameters__ExtIEs_5_Extension const int Alt__RAB__Parameters__ExtIEs_5_Extension_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters__ExtIEs_5_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Alt__RAB__Parameters__ExtIEs_5_Extension_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Alt__RAB__Parameters__ExtIEs_5_Extension_oer_ext_arr_, 3, Alt__RAB__Parameters__ExtIEs_5_Extension_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters__ExtIEs_5_Extension_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters-ExtIEs.5.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_json_, &Alt__RAB__Parameters__ExtIEs_5_Extension_oer_, &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Alt__RAB__Parameters__ExtIEs_5_criticality; const RANAP__CommonDataTypes::Criticality& Alt__RAB__Parameters__ExtIEs_5_criticality = const_Alt__RAB__Parameters__ExtIEs_5_criticality; INTEGER const_Alt__RAB__Parameters__ExtIEs_5_id; const INTEGER& Alt__RAB__Parameters__ExtIEs_5_id = const_Alt__RAB__Parameters__ExtIEs_5_id; RANAP__CommonDataTypes::Presence const_Alt__RAB__Parameters__ExtIEs_5_presence; const RANAP__CommonDataTypes::Presence& Alt__RAB__Parameters__ExtIEs_5_presence = const_Alt__RAB__Parameters__ExtIEs_5_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_default_coding(""); const ASN_Tag_t Alt__RAB__Parameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Alt__RAB__Parameters_iE__Extensions_ber_ = { 1u, Alt__RAB__Parameters_iE__Extensions_tag_ }; // No XER for Alt__RAB__Parameters_iE__Extensions const int Alt__RAB__Parameters_iE__Extensions_oer_ext_arr_[0] = {}; const int Alt__RAB__Parameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Alt__RAB__Parameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Alt__RAB__Parameters_iE__Extensions_oer_ext_arr_, 0, Alt__RAB__Parameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Alt__RAB__Parameters_iE__Extensions_descr_ = { "@RANAP-IEs.Alt-RAB-Parameters.iE-Extensions", &Alt__RAB__Parameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_json_, &Alt__RAB__Parameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Alt__RAB__Parameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Alt__RAB__Parameters_default_coding(""); // No XER for AlternativeRABConfigurationRequest const TTCN_JSONdescriptor_t AlternativeRABConfigurationRequest_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AlternativeRABConfigurationRequest_oer_ext_arr_[0] = {}; const int AlternativeRABConfigurationRequest_oer_p_[0] = {}; const TTCN_OERdescriptor_t AlternativeRABConfigurationRequest_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AlternativeRABConfigurationRequest_oer_ext_arr_, 0, AlternativeRABConfigurationRequest_oer_p_}; static const Per_Constraint AlternativeRABConfigurationRequest_per_cons_; const ASN_PERdescriptor_t AlternativeRABConfigurationRequest_per_ = { &AlternativeRABConfigurationRequest_per_cons_ }; const TTCN_Typedescriptor_t AlternativeRABConfigurationRequest_descr_ = { "@RANAP-IEs.AlternativeRABConfigurationRequest", &ENUMERATED_ber_, NULL, NULL, NULL, &AlternativeRABConfigurationRequest_json_, &AlternativeRABConfigurationRequest_oer_, &AlternativeRABConfigurationRequest_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AlternativeRABConfigurationRequest_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration const int UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_ext_arr_, 0, UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_p_}; static Per_Integer_Constraint UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_per_cons_(new INTEGER(1), new INTEGER(1000), FALSE); const ASN_PERdescriptor_t UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_per_ = { &UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_per_cons_ }; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration.applicationLayerContainerForMeasurementConfiguration", &UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_oer_, &UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_default_coding(""); // No XER for AreaScopeForUEApplicationLayerMeasurementConfiguration const TTCN_JSONdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_[0] = {}; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_[0] = {}; const TTCN_OERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_ = { -1, TRUE, -1, TRUE, 4, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_}; static const Per_Constraint AreaScopeForUEApplicationLayerMeasurementConfiguration_per_cons_; const ASN_PERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_per_ = { &AreaScopeForUEApplicationLayerMeasurementConfiguration_per_cons_ }; const TTCN_Typedescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_descr_ = { "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration", &CHOICE_ber_, NULL, NULL, NULL, &AreaScopeForUEApplicationLayerMeasurementConfiguration_json_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_oer_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for CellIdList const TTCN_JSONdescriptor_t CellIdList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CellIdList_oer_ext_arr_[0] = {}; const int CellIdList_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellIdList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellIdList_oer_ext_arr_, 0, CellIdList_oer_p_}; static Per_Integer_Constraint CellIdList_per_cons_(new INTEGER(1), new INTEGER(32), FALSE); const ASN_PERdescriptor_t CellIdList_per_ = { &CellIdList_per_cons_ }; const TTCN_Typedescriptor_t CellIdList_descr_ = { "@RANAP-IEs.CellIdList", &SEQUENCE_ber_, NULL, NULL, NULL, &CellIdList_json_, &CellIdList_oer_, &CellIdList_per_, &CellIdList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Cell__Id const int Cell__Id_oer_ext_arr_[0] = {}; const int Cell__Id_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Id_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Cell__Id_oer_ext_arr_, 0, Cell__Id_oer_p_}; static Per_Integer_Constraint Cell__Id_per_cons_(new INTEGER(0), new INTEGER(268435455), FALSE); const ASN_PERdescriptor_t Cell__Id_per_ = { &Cell__Id_per_cons_ }; const TTCN_Typedescriptor_t Cell__Id_descr_ = { "@RANAP-IEs.Cell-Id", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cell__Id_oer_, &Cell__Id_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Id_default_coding(""); // No XER for CellIdList_0 const int CellIdList_0_oer_ext_arr_[0] = {}; const int CellIdList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellIdList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, CellIdList_0_oer_ext_arr_, 0, CellIdList_0_oer_p_}; const TTCN_Typedescriptor_t CellIdList_0_descr_ = { "@RANAP-IEs.CellIdList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CellIdList_0_oer_, &Cell__Id_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellIdList_0_default_coding(""); UNIVERSAL_CHARSTRING CellIdList_default_coding(""); const ASN_Tag_t CellBased_cellIdList_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CellBased_cellIdList_ber_ = { 1u, CellBased_cellIdList_tag_ }; // No XER for CellBased_cellIdList const int CellBased_cellIdList_oer_ext_arr_[0] = {}; const int CellBased_cellIdList_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellBased_cellIdList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellBased_cellIdList_oer_ext_arr_, 0, CellBased_cellIdList_oer_p_}; const TTCN_Typedescriptor_t CellBased_cellIdList_descr_ = { "@RANAP-IEs.CellBased.cellIdList", &CellBased_cellIdList_ber_, NULL, NULL, NULL, &CellIdList_json_, &CellBased_cellIdList_oer_, &CellIdList_per_, &CellIdList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellBased_cellIdList_default_coding(""); // No XER for CellBased const TTCN_JSONdescriptor_t CellBased_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CellBased_oer_ext_arr_[0] = {}; const int CellBased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t CellBased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, CellBased_oer_ext_arr_, 2, CellBased_oer_p_}; static const Per_Constraint CellBased_per_cons_; const ASN_PERdescriptor_t CellBased_per_ = { &CellBased_per_cons_ }; const TTCN_Typedescriptor_t CellBased_descr_ = { "@RANAP-IEs.CellBased", &SEQUENCE_ber_, NULL, NULL, NULL, &CellBased_json_, &CellBased_oer_, &CellBased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_default_coding(""); const ASN_Tag_t CellBased_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CellBased_iE__Extensions_ber_ = { 1u, CellBased_iE__Extensions_tag_ }; // No XER for CellBased_iE__Extensions const int CellBased_iE__Extensions_oer_ext_arr_[0] = {}; const int CellBased_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellBased_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellBased_iE__Extensions_oer_ext_arr_, 0, CellBased_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CellBased_iE__Extensions_descr_ = { "@RANAP-IEs.CellBased.iE-Extensions", &CellBased_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_json_, &CellBased_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellBased_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CellBased_default_coding(""); const ASN_Tag_t AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_ber_ = { 1u, AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_tag_ }; // No XER for AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased const int AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_ext_arr_[0] = {}; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_ext_arr_, 2, AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_p_}; const TTCN_Typedescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_ = { "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.cellbased", &AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_ber_, NULL, NULL, NULL, &CellBased_json_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_oer_, &CellBased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_default_coding(""); // No XER for LAI__List const TTCN_JSONdescriptor_t LAI__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LAI__List_oer_ext_arr_[0] = {}; const int LAI__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAI__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAI__List_oer_ext_arr_, 0, LAI__List_oer_p_}; static Per_Integer_Constraint LAI__List_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t LAI__List_per_ = { &LAI__List_per_cons_ }; const TTCN_Typedescriptor_t LAI__List_descr_ = { "@RANAP-IEs.LAI-List", &SEQUENCE_ber_, NULL, NULL, NULL, &LAI__List_json_, &LAI__List_oer_, &LAI__List_per_, &LAI__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for LAI__List_0 const int LAI__List_0_oer_ext_arr_[0] = {}; const int LAI__List_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LAI__List_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAI__List_0_oer_ext_arr_, 3, LAI__List_0_oer_p_}; const TTCN_Typedescriptor_t LAI__List_0_descr_ = { "@RANAP-IEs.LAI-List.", &SEQUENCE_ber_, NULL, NULL, NULL, &LAI_json_, &LAI__List_0_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAI__List_0_default_coding(""); UNIVERSAL_CHARSTRING LAI__List_default_coding(""); const ASN_Tag_t LABased_laiList_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LABased_laiList_ber_ = { 1u, LABased_laiList_tag_ }; // No XER for LABased_laiList const int LABased_laiList_oer_ext_arr_[0] = {}; const int LABased_laiList_oer_p_[0] = {}; const TTCN_OERdescriptor_t LABased_laiList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LABased_laiList_oer_ext_arr_, 0, LABased_laiList_oer_p_}; const TTCN_Typedescriptor_t LABased_laiList_descr_ = { "@RANAP-IEs.LABased.laiList", &LABased_laiList_ber_, NULL, NULL, NULL, &LAI__List_json_, &LABased_laiList_oer_, &LAI__List_per_, &LAI__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LABased_laiList_default_coding(""); // No XER for LABased const TTCN_JSONdescriptor_t LABased_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LABased_oer_ext_arr_[0] = {}; const int LABased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t LABased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, LABased_oer_ext_arr_, 2, LABased_oer_p_}; static const Per_Constraint LABased_per_cons_; const ASN_PERdescriptor_t LABased_per_ = { &LABased_per_cons_ }; const TTCN_Typedescriptor_t LABased_descr_ = { "@RANAP-IEs.LABased", &SEQUENCE_ber_, NULL, NULL, NULL, &LABased_json_, &LABased_oer_, &LABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_default_coding(""); const ASN_Tag_t LABased_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LABased_iE__Extensions_ber_ = { 1u, LABased_iE__Extensions_tag_ }; // No XER for LABased_iE__Extensions const int LABased_iE__Extensions_oer_ext_arr_[0] = {}; const int LABased_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LABased_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LABased_iE__Extensions_oer_ext_arr_, 0, LABased_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LABased_iE__Extensions_descr_ = { "@RANAP-IEs.LABased.iE-Extensions", &LABased_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_json_, &LABased_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LABased_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LABased_default_coding(""); const ASN_Tag_t AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_ber_ = { 1u, AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_tag_ }; // No XER for AreaScopeForUEApplicationLayerMeasurementConfiguration_labased const int AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_ext_arr_[0] = {}; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_ext_arr_, 2, AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_p_}; const TTCN_Typedescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_ = { "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.labased", &AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_ber_, NULL, NULL, NULL, &LABased_json_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_oer_, &LABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_default_coding(""); // No XER for RAI__List const TTCN_JSONdescriptor_t RAI__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAI__List_oer_ext_arr_[0] = {}; const int RAI__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAI__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAI__List_oer_ext_arr_, 0, RAI__List_oer_p_}; static Per_Integer_Constraint RAI__List_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t RAI__List_per_ = { &RAI__List_per_cons_ }; const TTCN_Typedescriptor_t RAI__List_descr_ = { "@RANAP-IEs.RAI-List", &SEQUENCE_ber_, NULL, NULL, NULL, &RAI__List_json_, &RAI__List_oer_, &RAI__List_per_, &RAI__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RAI_lAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RAI_lAI_ber_ = { 1u, RAI_lAI_tag_ }; // No XER for RAI_lAI const int RAI_lAI_oer_ext_arr_[0] = {}; const int RAI_lAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RAI_lAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAI_lAI_oer_ext_arr_, 3, RAI_lAI_oer_p_}; const TTCN_Typedescriptor_t RAI_lAI_descr_ = { "@RANAP-IEs.RAI.lAI", &RAI_lAI_ber_, NULL, NULL, NULL, &LAI_json_, &RAI_lAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAI_lAI_default_coding(""); const ASN_Tag_t RAI_rAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RAI_rAC_ber_ = { 1u, RAI_rAC_tag_ }; // No XER for RAI_rAC const int RAI_rAC_oer_ext_arr_[0] = {}; const int RAI_rAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAI_rAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAI_rAC_oer_ext_arr_, 0, RAI_rAC_oer_p_}; const TTCN_Typedescriptor_t RAI_rAC_descr_ = { "@RANAP-IEs.RAI.rAC", &RAI_rAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RAI_rAC_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAI_rAC_default_coding(""); // No XER for RAI const TTCN_JSONdescriptor_t RAI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAI_oer_ext_arr_[0] = {}; const int RAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RAI_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RAI_oer_ext_arr_, 3, RAI_oer_p_}; static const Per_Constraint RAI_per_cons_; const ASN_PERdescriptor_t RAI_per_ = { &RAI_per_cons_ }; const TTCN_Typedescriptor_t RAI_descr_ = { "@RANAP-IEs.RAI", &SEQUENCE_ber_, NULL, NULL, NULL, &RAI_json_, &RAI_oer_, &RAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_default_coding(""); const ASN_Tag_t RAI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RAI_iE__Extensions_ber_ = { 1u, RAI_iE__Extensions_tag_ }; // No XER for RAI_iE__Extensions const int RAI_iE__Extensions_oer_ext_arr_[0] = {}; const int RAI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAI_iE__Extensions_oer_ext_arr_, 0, RAI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RAI_iE__Extensions_descr_ = { "@RANAP-IEs.RAI.iE-Extensions", &RAI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_json_, &RAI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RAI_default_coding(""); // No XER for RAI__List_0 const int RAI__List_0_oer_ext_arr_[0] = {}; const int RAI__List_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RAI__List_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RAI__List_0_oer_ext_arr_, 3, RAI__List_0_oer_p_}; const TTCN_Typedescriptor_t RAI__List_0_descr_ = { "@RANAP-IEs.RAI-List.", &SEQUENCE_ber_, NULL, NULL, NULL, &RAI_json_, &RAI__List_0_oer_, &RAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAI__List_0_default_coding(""); UNIVERSAL_CHARSTRING RAI__List_default_coding(""); const ASN_Tag_t RABased_raiList_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RABased_raiList_ber_ = { 1u, RABased_raiList_tag_ }; // No XER for RABased_raiList const int RABased_raiList_oer_ext_arr_[0] = {}; const int RABased_raiList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABased_raiList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABased_raiList_oer_ext_arr_, 0, RABased_raiList_oer_p_}; const TTCN_Typedescriptor_t RABased_raiList_descr_ = { "@RANAP-IEs.RABased.raiList", &RABased_raiList_ber_, NULL, NULL, NULL, &RAI__List_json_, &RABased_raiList_oer_, &RAI__List_per_, &RAI__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABased_raiList_default_coding(""); // No XER for RABased const TTCN_JSONdescriptor_t RABased_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RABased_oer_ext_arr_[0] = {}; const int RABased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t RABased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, RABased_oer_ext_arr_, 2, RABased_oer_p_}; static const Per_Constraint RABased_per_cons_; const ASN_PERdescriptor_t RABased_per_ = { &RABased_per_cons_ }; const TTCN_Typedescriptor_t RABased_descr_ = { "@RANAP-IEs.RABased", &SEQUENCE_ber_, NULL, NULL, NULL, &RABased_json_, &RABased_oer_, &RABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_default_coding(""); const ASN_Tag_t RABased_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RABased_iE__Extensions_ber_ = { 1u, RABased_iE__Extensions_tag_ }; // No XER for RABased_iE__Extensions const int RABased_iE__Extensions_oer_ext_arr_[0] = {}; const int RABased_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABased_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABased_iE__Extensions_oer_ext_arr_, 0, RABased_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RABased_iE__Extensions_descr_ = { "@RANAP-IEs.RABased.iE-Extensions", &RABased_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_json_, &RABased_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABased_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RABased_default_coding(""); const ASN_Tag_t AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_ber_ = { 1u, AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_tag_ }; // No XER for AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased const int AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_ext_arr_[0] = {}; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_ext_arr_, 2, AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_p_}; const TTCN_Typedescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_ = { "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.rabased", &AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_ber_, NULL, NULL, NULL, &RABased_json_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_oer_, &RABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_default_coding(""); // No XER for PLMNList const TTCN_JSONdescriptor_t PLMNList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PLMNList_oer_ext_arr_[0] = {}; const int PLMNList_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNList_oer_ext_arr_, 0, PLMNList_oer_p_}; static Per_Integer_Constraint PLMNList_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t PLMNList_per_ = { &PLMNList_per_cons_ }; const TTCN_Typedescriptor_t PLMNList_descr_ = { "@RANAP-IEs.PLMNList", &SEQUENCE_ber_, NULL, NULL, NULL, &PLMNList_json_, &PLMNList_oer_, &PLMNList_per_, &PLMNList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PLMNList_0 const int PLMNList_0_oer_ext_arr_[0] = {}; const int PLMNList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNList_0_oer_ = { -1, TRUE, 3, FALSE, 0, 0, PLMNList_0_oer_ext_arr_, 0, PLMNList_0_oer_p_}; const TTCN_Typedescriptor_t PLMNList_0_descr_ = { "@RANAP-IEs.PLMNList.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PLMNList_0_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNList_0_default_coding(""); UNIVERSAL_CHARSTRING PLMNList_default_coding(""); const ASN_Tag_t PLMNBased_plmnList_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PLMNBased_plmnList_ber_ = { 1u, PLMNBased_plmnList_tag_ }; // No XER for PLMNBased_plmnList const int PLMNBased_plmnList_oer_ext_arr_[0] = {}; const int PLMNBased_plmnList_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNBased_plmnList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNBased_plmnList_oer_ext_arr_, 0, PLMNBased_plmnList_oer_p_}; const TTCN_Typedescriptor_t PLMNBased_plmnList_descr_ = { "@RANAP-IEs.PLMNBased.plmnList", &PLMNBased_plmnList_ber_, NULL, NULL, NULL, &PLMNList_json_, &PLMNBased_plmnList_oer_, &PLMNList_per_, &PLMNList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNBased_plmnList_default_coding(""); // No XER for PLMNBased const TTCN_JSONdescriptor_t PLMNBased_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PLMNBased_oer_ext_arr_[0] = {}; const int PLMNBased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t PLMNBased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, PLMNBased_oer_ext_arr_, 2, PLMNBased_oer_p_}; static const Per_Constraint PLMNBased_per_cons_; const ASN_PERdescriptor_t PLMNBased_per_ = { &PLMNBased_per_cons_ }; const TTCN_Typedescriptor_t PLMNBased_descr_ = { "@RANAP-IEs.PLMNBased", &SEQUENCE_ber_, NULL, NULL, NULL, &PLMNBased_json_, &PLMNBased_oer_, &PLMNBased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_default_coding(""); const ASN_Tag_t PLMNBased_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t PLMNBased_iE__Extensions_ber_ = { 1u, PLMNBased_iE__Extensions_tag_ }; // No XER for PLMNBased_iE__Extensions const int PLMNBased_iE__Extensions_oer_ext_arr_[0] = {}; const int PLMNBased_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNBased_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNBased_iE__Extensions_oer_ext_arr_, 0, PLMNBased_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t PLMNBased_iE__Extensions_descr_ = { "@RANAP-IEs.PLMNBased.iE-Extensions", &PLMNBased_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_json_, &PLMNBased_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNBased_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING PLMNBased_default_coding(""); const ASN_Tag_t AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_ber_ = { 1u, AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_tag_ }; // No XER for AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based const int AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_ext_arr_[0] = {}; const int AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_ = { -1, TRUE, -1, TRUE, 2, 0, AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_ext_arr_, 2, AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_p_}; const TTCN_Typedescriptor_t AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_ = { "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.plmn-area-based", &AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_ber_, NULL, NULL, NULL, &PLMNBased_json_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_oer_, &PLMNBased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_default_coding(""); UNIVERSAL_CHARSTRING AreaScopeForUEApplicationLayerMeasurementConfiguration_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration const int UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ = { -1, TRUE, -1, TRUE, 4, 0, UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_, 0, UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_}; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration.areaScopeForUEApplicationLayerMeasurementConfiguration", &UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_ber_, NULL, NULL, NULL, &AreaScopeForUEApplicationLayerMeasurementConfiguration_json_, &UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_default_coding(""); // No XER for UE__Application__Layer__Measurement__Configuration const TTCN_JSONdescriptor_t UE__Application__Layer__Measurement__Configuration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__Application__Layer__Measurement__Configuration_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration_oer_ = { -1, TRUE, -1, TRUE, 2, 0, UE__Application__Layer__Measurement__Configuration_oer_ext_arr_, 2, UE__Application__Layer__Measurement__Configuration_oer_p_}; static const Per_Constraint UE__Application__Layer__Measurement__Configuration_per_cons_; const ASN_PERdescriptor_t UE__Application__Layer__Measurement__Configuration_per_ = { &UE__Application__Layer__Measurement__Configuration_per_cons_ }; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration", &SEQUENCE_ber_, NULL, NULL, NULL, &UE__Application__Layer__Measurement__Configuration_json_, &UE__Application__Layer__Measurement__Configuration_oer_, &UE__Application__Layer__Measurement__Configuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration const int UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ = { -1, TRUE, -1, TRUE, 4, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_ext_arr_, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_p_}; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation.areaScopeForUEApplicationLayerMeasurementConfiguration", &UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_ber_, NULL, NULL, NULL, &AreaScopeForUEApplicationLayerMeasurementConfiguration_json_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_oer_, &AreaScopeForUEApplicationLayerMeasurementConfiguration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_default_coding(""); // No XER for TraceReference const int TraceReference_oer_ext_arr_[0] = {}; const int TraceReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceReference_oer_ext_arr_, 0, TraceReference_oer_p_}; static Per_Integer_Constraint TraceReference_per_cons_(new INTEGER(2), new INTEGER(3), FALSE); const ASN_PERdescriptor_t TraceReference_per_ = { &TraceReference_per_cons_ }; const TTCN_Typedescriptor_t TraceReference_descr_ = { "@RANAP-IEs.TraceReference", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TraceReference_oer_, &TraceReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceReference_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference const int UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_ext_arr_, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_p_}; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation.traceReference", &UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_oer_, &TraceReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_default_coding(""); // No XER for UE__Application__Layer__Measurement__Configuration__For__Relocation const TTCN_JSONdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_ = { -1, TRUE, -1, TRUE, 4, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_ext_arr_, 4, UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_p_}; static const Per_Constraint UE__Application__Layer__Measurement__Configuration__For__Relocation_per_cons_; const ASN_PERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_per_ = { &UE__Application__Layer__Measurement__Configuration__For__Relocation_per_cons_ }; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation", &SEQUENCE_ber_, NULL, NULL, NULL, &UE__Application__Layer__Measurement__Configuration__For__Relocation_json_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_oer_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TraceRecordingSessionReference const int TraceRecordingSessionReference_oer_ext_arr_[0] = {}; const int TraceRecordingSessionReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRecordingSessionReference_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TraceRecordingSessionReference_oer_ext_arr_, 0, TraceRecordingSessionReference_oer_p_}; static Per_Integer_Constraint TraceRecordingSessionReference_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t TraceRecordingSessionReference_per_ = { &TraceRecordingSessionReference_per_cons_ }; const TTCN_Typedescriptor_t TraceRecordingSessionReference_descr_ = { "@RANAP-IEs.TraceRecordingSessionReference", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TraceRecordingSessionReference_oer_, &TraceRecordingSessionReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRecordingSessionReference_default_coding(""); const ASN_Tag_t TracePropagationParameters_traceRecordingSessionReference_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TracePropagationParameters_traceRecordingSessionReference_ber_ = { 1u, TracePropagationParameters_traceRecordingSessionReference_tag_ }; // No XER for TracePropagationParameters_traceRecordingSessionReference const int TracePropagationParameters_traceRecordingSessionReference_oer_ext_arr_[0] = {}; const int TracePropagationParameters_traceRecordingSessionReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TracePropagationParameters_traceRecordingSessionReference_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TracePropagationParameters_traceRecordingSessionReference_oer_ext_arr_, 0, TracePropagationParameters_traceRecordingSessionReference_oer_p_}; const TTCN_Typedescriptor_t TracePropagationParameters_traceRecordingSessionReference_descr_ = { "@RANAP-IEs.TracePropagationParameters.traceRecordingSessionReference", &TracePropagationParameters_traceRecordingSessionReference_ber_, NULL, NULL, NULL, &INTEGER_json_, &TracePropagationParameters_traceRecordingSessionReference_oer_, &TraceRecordingSessionReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TracePropagationParameters_traceRecordingSessionReference_default_coding(""); // No XER for TraceDepth const TTCN_JSONdescriptor_t TraceDepth_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TraceDepth_oer_ext_arr_[0] = {}; const int TraceDepth_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceDepth_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceDepth_oer_ext_arr_, 0, TraceDepth_oer_p_}; static const Per_Constraint TraceDepth_per_cons_; const ASN_PERdescriptor_t TraceDepth_per_ = { &TraceDepth_per_cons_ }; const TTCN_Typedescriptor_t TraceDepth_descr_ = { "@RANAP-IEs.TraceDepth", &ENUMERATED_ber_, NULL, NULL, NULL, &TraceDepth_json_, &TraceDepth_oer_, &TraceDepth_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceDepth_default_coding(""); const ASN_Tag_t TracePropagationParameters_traceDepth_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TracePropagationParameters_traceDepth_ber_ = { 1u, TracePropagationParameters_traceDepth_tag_ }; // No XER for TracePropagationParameters_traceDepth const int TracePropagationParameters_traceDepth_oer_ext_arr_[0] = {}; const int TracePropagationParameters_traceDepth_oer_p_[0] = {}; const TTCN_OERdescriptor_t TracePropagationParameters_traceDepth_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TracePropagationParameters_traceDepth_oer_ext_arr_, 0, TracePropagationParameters_traceDepth_oer_p_}; const TTCN_Typedescriptor_t TracePropagationParameters_traceDepth_descr_ = { "@RANAP-IEs.TracePropagationParameters.traceDepth", &TracePropagationParameters_traceDepth_ber_, NULL, NULL, NULL, &TraceDepth_json_, &TracePropagationParameters_traceDepth_oer_, &TraceDepth_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TracePropagationParameters_traceDepth_default_coding(""); // No XER for TracePropagationParameters const TTCN_JSONdescriptor_t TracePropagationParameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TracePropagationParameters_oer_ext_arr_[0] = {}; const int TracePropagationParameters_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TracePropagationParameters_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TracePropagationParameters_oer_ext_arr_, 4, TracePropagationParameters_oer_p_}; static const Per_Constraint TracePropagationParameters_per_cons_; const ASN_PERdescriptor_t TracePropagationParameters_per_ = { &TracePropagationParameters_per_cons_ }; const TTCN_Typedescriptor_t TracePropagationParameters_descr_ = { "@RANAP-IEs.TracePropagationParameters", &SEQUENCE_ber_, NULL, NULL, NULL, &TracePropagationParameters_json_, &TracePropagationParameters_oer_, &TracePropagationParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ListOfInterfacesToTrace const TTCN_JSONdescriptor_t ListOfInterfacesToTrace_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ListOfInterfacesToTrace_oer_ext_arr_[0] = {}; const int ListOfInterfacesToTrace_oer_p_[0] = {}; const TTCN_OERdescriptor_t ListOfInterfacesToTrace_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ListOfInterfacesToTrace_oer_ext_arr_, 0, ListOfInterfacesToTrace_oer_p_}; static Per_Integer_Constraint ListOfInterfacesToTrace_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t ListOfInterfacesToTrace_per_ = { &ListOfInterfacesToTrace_per_cons_ }; const TTCN_Typedescriptor_t ListOfInterfacesToTrace_descr_ = { "@RANAP-IEs.ListOfInterfacesToTrace", &SEQUENCE_ber_, NULL, NULL, NULL, &ListOfInterfacesToTrace_json_, &ListOfInterfacesToTrace_oer_, &ListOfInterfacesToTrace_per_, &ListOfInterfacesToTrace_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t InterfacesToTraceItem_interface_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InterfacesToTraceItem_interface_ber_ = { 1u, InterfacesToTraceItem_interface_tag_ }; // No XER for InterfacesToTraceItem_interface const TTCN_JSONdescriptor_t InterfacesToTraceItem_interface_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InterfacesToTraceItem_interface_oer_ext_arr_[0] = {}; const int InterfacesToTraceItem_interface_oer_p_[0] = {}; const TTCN_OERdescriptor_t InterfacesToTraceItem_interface_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InterfacesToTraceItem_interface_oer_ext_arr_, 0, InterfacesToTraceItem_interface_oer_p_}; static const Per_Constraint InterfacesToTraceItem_interface_per_cons_; const ASN_PERdescriptor_t InterfacesToTraceItem_interface_per_ = { &InterfacesToTraceItem_interface_per_cons_ }; const TTCN_Typedescriptor_t InterfacesToTraceItem_interface_descr_ = { "@RANAP-IEs.InterfacesToTraceItem.interface", &InterfacesToTraceItem_interface_ber_, NULL, NULL, NULL, &InterfacesToTraceItem_interface_json_, &InterfacesToTraceItem_interface_oer_, &InterfacesToTraceItem_interface_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterfacesToTraceItem_interface_default_coding(""); // No XER for InterfacesToTraceItem const TTCN_JSONdescriptor_t InterfacesToTraceItem_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InterfacesToTraceItem_oer_ext_arr_[0] = {}; const int InterfacesToTraceItem_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t InterfacesToTraceItem_oer_ = { -1, TRUE, -1, TRUE, 2, 0, InterfacesToTraceItem_oer_ext_arr_, 2, InterfacesToTraceItem_oer_p_}; static const Per_Constraint InterfacesToTraceItem_per_cons_; const ASN_PERdescriptor_t InterfacesToTraceItem_per_ = { &InterfacesToTraceItem_per_cons_ }; const TTCN_Typedescriptor_t InterfacesToTraceItem_descr_ = { "@RANAP-IEs.InterfacesToTraceItem", &SEQUENCE_ber_, NULL, NULL, NULL, &InterfacesToTraceItem_json_, &InterfacesToTraceItem_oer_, &InterfacesToTraceItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_default_coding(""); const ASN_Tag_t InterfacesToTraceItem_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t InterfacesToTraceItem_iE__Extensions_ber_ = { 1u, InterfacesToTraceItem_iE__Extensions_tag_ }; // No XER for InterfacesToTraceItem_iE__Extensions const int InterfacesToTraceItem_iE__Extensions_oer_ext_arr_[0] = {}; const int InterfacesToTraceItem_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t InterfacesToTraceItem_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InterfacesToTraceItem_iE__Extensions_oer_ext_arr_, 0, InterfacesToTraceItem_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t InterfacesToTraceItem_iE__Extensions_descr_ = { "@RANAP-IEs.InterfacesToTraceItem.iE-Extensions", &InterfacesToTraceItem_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_json_, &InterfacesToTraceItem_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterfacesToTraceItem_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING InterfacesToTraceItem_default_coding(""); // No XER for ListOfInterfacesToTrace_0 const int ListOfInterfacesToTrace_0_oer_ext_arr_[0] = {}; const int ListOfInterfacesToTrace_0_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t ListOfInterfacesToTrace_0_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ListOfInterfacesToTrace_0_oer_ext_arr_, 2, ListOfInterfacesToTrace_0_oer_p_}; const TTCN_Typedescriptor_t ListOfInterfacesToTrace_0_descr_ = { "@RANAP-IEs.ListOfInterfacesToTrace.", &SEQUENCE_ber_, NULL, NULL, NULL, &InterfacesToTraceItem_json_, &ListOfInterfacesToTrace_0_oer_, &InterfacesToTraceItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOfInterfacesToTrace_0_default_coding(""); UNIVERSAL_CHARSTRING ListOfInterfacesToTrace_default_coding(""); const ASN_Tag_t TracePropagationParameters_listOfInterfacesToTrace_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TracePropagationParameters_listOfInterfacesToTrace_ber_ = { 1u, TracePropagationParameters_listOfInterfacesToTrace_tag_ }; // No XER for TracePropagationParameters_listOfInterfacesToTrace const int TracePropagationParameters_listOfInterfacesToTrace_oer_ext_arr_[0] = {}; const int TracePropagationParameters_listOfInterfacesToTrace_oer_p_[0] = {}; const TTCN_OERdescriptor_t TracePropagationParameters_listOfInterfacesToTrace_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TracePropagationParameters_listOfInterfacesToTrace_oer_ext_arr_, 0, TracePropagationParameters_listOfInterfacesToTrace_oer_p_}; const TTCN_Typedescriptor_t TracePropagationParameters_listOfInterfacesToTrace_descr_ = { "@RANAP-IEs.TracePropagationParameters.listOfInterfacesToTrace", &TracePropagationParameters_listOfInterfacesToTrace_ber_, NULL, NULL, NULL, &ListOfInterfacesToTrace_json_, &TracePropagationParameters_listOfInterfacesToTrace_oer_, &ListOfInterfacesToTrace_per_, &ListOfInterfacesToTrace_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TracePropagationParameters_listOfInterfacesToTrace_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_default_coding(""); const ASN_Tag_t TracePropagationParameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t TracePropagationParameters_iE__Extensions_ber_ = { 1u, TracePropagationParameters_iE__Extensions_tag_ }; // No XER for TracePropagationParameters_iE__Extensions const int TracePropagationParameters_iE__Extensions_oer_ext_arr_[0] = {}; const int TracePropagationParameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TracePropagationParameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TracePropagationParameters_iE__Extensions_oer_ext_arr_, 0, TracePropagationParameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TracePropagationParameters_iE__Extensions_descr_ = { "@RANAP-IEs.TracePropagationParameters.iE-Extensions", &TracePropagationParameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_json_, &TracePropagationParameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TracePropagationParameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TracePropagationParameters_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters const int UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_ = { -1, TRUE, -1, TRUE, 4, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_ext_arr_, 4, UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_p_}; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation.tracePropagationParameters", &UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_ber_, NULL, NULL, NULL, &TracePropagationParameters_json_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_oer_, &TracePropagationParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_default_coding(""); // No XER for TransportLayerAddress const int TransportLayerAddress_oer_ext_arr_[0] = {}; const int TransportLayerAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t TransportLayerAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TransportLayerAddress_oer_ext_arr_, 0, TransportLayerAddress_oer_p_}; static Per_Integer_Constraint TransportLayerAddress_size_per_cons_(new INTEGER(1), new INTEGER(160), TRUE); static Per_BitString_Constraint TransportLayerAddress_per_cons_(FALSE, &TransportLayerAddress_size_per_cons_); const ASN_PERdescriptor_t TransportLayerAddress_per_ = { &TransportLayerAddress_per_cons_ }; const TTCN_Typedescriptor_t TransportLayerAddress_descr_ = { "@RANAP-IEs.TransportLayerAddress", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &TransportLayerAddress_oer_, &TransportLayerAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TransportLayerAddress_default_coding(""); const ASN_Tag_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_ber_ = { 1u, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_tag_ }; // No XER for UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress const int UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_ext_arr_[0] = {}; const int UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_ext_arr_, 0, UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_p_}; const TTCN_Typedescriptor_t UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_ = { "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation.traceCollectionEntityIPAddress", &UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_oer_, &TransportLayerAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_default_coding(""); UNIVERSAL_CHARSTRING UE__Application__Layer__Measurement__Configuration__For__Relocation_default_coding(""); // No XER for APN const int APN_oer_ext_arr_[0] = {}; const int APN_oer_p_[0] = {}; const TTCN_OERdescriptor_t APN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, APN_oer_ext_arr_, 0, APN_oer_p_}; static Per_Integer_Constraint APN_per_cons_(new INTEGER(1), new INTEGER(255), FALSE); const ASN_PERdescriptor_t APN_per_ = { &APN_per_cons_ }; const TTCN_Typedescriptor_t APN_descr_ = { "@RANAP-IEs.APN", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &APN_oer_, &APN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING APN_default_coding(""); // No XER for AreaIdentity const TTCN_JSONdescriptor_t AreaIdentity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AreaIdentity_oer_ext_arr_[0] = {}; const int AreaIdentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t AreaIdentity_oer_ = { -1, TRUE, -1, TRUE, 2, 0, AreaIdentity_oer_ext_arr_, 0, AreaIdentity_oer_p_}; static const Per_Constraint AreaIdentity_per_cons_; const ASN_PERdescriptor_t AreaIdentity_per_ = { &AreaIdentity_per_cons_ }; const TTCN_Typedescriptor_t AreaIdentity_descr_ = { "@RANAP-IEs.AreaIdentity", &CHOICE_ber_, NULL, NULL, NULL, &AreaIdentity_json_, &AreaIdentity_oer_, &AreaIdentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SAI_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SAI_pLMNidentity_ber_ = { 1u, SAI_pLMNidentity_tag_ }; // No XER for SAI_pLMNidentity const int SAI_pLMNidentity_oer_ext_arr_[0] = {}; const int SAI_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAI_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, SAI_pLMNidentity_oer_ext_arr_, 0, SAI_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t SAI_pLMNidentity_descr_ = { "@RANAP-IEs.SAI.pLMNidentity", &SAI_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SAI_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAI_pLMNidentity_default_coding(""); const ASN_Tag_t SAI_lAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SAI_lAC_ber_ = { 1u, SAI_lAC_tag_ }; // No XER for SAI_lAC const int SAI_lAC_oer_ext_arr_[0] = {}; const int SAI_lAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAI_lAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SAI_lAC_oer_ext_arr_, 0, SAI_lAC_oer_p_}; const TTCN_Typedescriptor_t SAI_lAC_descr_ = { "@RANAP-IEs.SAI.lAC", &SAI_lAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SAI_lAC_oer_, &LAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAI_lAC_default_coding(""); // No XER for SAC const int SAC_oer_ext_arr_[0] = {}; const int SAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SAC_oer_ext_arr_, 0, SAC_oer_p_}; static Per_Integer_Constraint SAC_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t SAC_per_ = { &SAC_per_cons_ }; const TTCN_Typedescriptor_t SAC_descr_ = { "@RANAP-IEs.SAC", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SAC_oer_, &SAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAC_default_coding(""); const ASN_Tag_t SAI_sAC_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SAI_sAC_ber_ = { 1u, SAI_sAC_tag_ }; // No XER for SAI_sAC const int SAI_sAC_oer_ext_arr_[0] = {}; const int SAI_sAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAI_sAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SAI_sAC_oer_ext_arr_, 0, SAI_sAC_oer_p_}; const TTCN_Typedescriptor_t SAI_sAC_descr_ = { "@RANAP-IEs.SAI.sAC", &SAI_sAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SAI_sAC_oer_, &SAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAI_sAC_default_coding(""); // No XER for SAI const TTCN_JSONdescriptor_t SAI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SAI_oer_ext_arr_[0] = {}; const int SAI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SAI_oer_ext_arr_, 4, SAI_oer_p_}; static const Per_Constraint SAI_per_cons_; const ASN_PERdescriptor_t SAI_per_ = { &SAI_per_cons_ }; const TTCN_Typedescriptor_t SAI_descr_ = { "@RANAP-IEs.SAI", &SEQUENCE_ber_, NULL, NULL, NULL, &SAI_json_, &SAI_oer_, &SAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst19", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst19.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst19.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst19.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst19.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst19", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst19.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst19_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_default_coding(""); const ASN_Tag_t SAI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t SAI_iE__Extensions_ber_ = { 1u, SAI_iE__Extensions_tag_ }; // No XER for SAI_iE__Extensions const int SAI_iE__Extensions_oer_ext_arr_[0] = {}; const int SAI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SAI_iE__Extensions_oer_ext_arr_, 0, SAI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SAI_iE__Extensions_descr_ = { "@RANAP-IEs.SAI.iE-Extensions", &SAI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_json_, &SAI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst19_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SAI_default_coding(""); const ASN_Tag_t AreaIdentity_sAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t AreaIdentity_sAI_ber_ = { 1u, AreaIdentity_sAI_tag_ }; // No XER for AreaIdentity_sAI const int AreaIdentity_sAI_oer_ext_arr_[0] = {}; const int AreaIdentity_sAI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t AreaIdentity_sAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AreaIdentity_sAI_oer_ext_arr_, 4, AreaIdentity_sAI_oer_p_}; const TTCN_Typedescriptor_t AreaIdentity_sAI_descr_ = { "@RANAP-IEs.AreaIdentity.sAI", &AreaIdentity_sAI_ber_, NULL, NULL, NULL, &SAI_json_, &AreaIdentity_sAI_oer_, &SAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaIdentity_sAI_default_coding(""); // No XER for GeographicalArea const TTCN_JSONdescriptor_t GeographicalArea_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GeographicalArea_oer_ext_arr_[0] = {}; const int GeographicalArea_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalArea_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GeographicalArea_oer_ext_arr_, 0, GeographicalArea_oer_p_}; static const Per_Constraint GeographicalArea_per_cons_; const ASN_PERdescriptor_t GeographicalArea_per_ = { &GeographicalArea_per_cons_ }; const TTCN_Typedescriptor_t GeographicalArea_descr_ = { "@RANAP-IEs.GeographicalArea", &CHOICE_ber_, NULL, NULL, NULL, &GeographicalArea_json_, &GeographicalArea_oer_, &GeographicalArea_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t GeographicalCoordinates_latitudeSign_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GeographicalCoordinates_latitudeSign_ber_ = { 1u, GeographicalCoordinates_latitudeSign_tag_ }; // No XER for GeographicalCoordinates_latitudeSign const TTCN_JSONdescriptor_t GeographicalCoordinates_latitudeSign_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GeographicalCoordinates_latitudeSign_oer_ext_arr_[0] = {}; const int GeographicalCoordinates_latitudeSign_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalCoordinates_latitudeSign_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GeographicalCoordinates_latitudeSign_oer_ext_arr_, 0, GeographicalCoordinates_latitudeSign_oer_p_}; static const Per_Constraint GeographicalCoordinates_latitudeSign_per_cons_; const ASN_PERdescriptor_t GeographicalCoordinates_latitudeSign_per_ = { &GeographicalCoordinates_latitudeSign_per_cons_ }; const TTCN_Typedescriptor_t GeographicalCoordinates_latitudeSign_descr_ = { "@RANAP-IEs.GeographicalCoordinates.latitudeSign", &GeographicalCoordinates_latitudeSign_ber_, NULL, NULL, NULL, &GeographicalCoordinates_latitudeSign_json_, &GeographicalCoordinates_latitudeSign_oer_, &GeographicalCoordinates_latitudeSign_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalCoordinates_latitudeSign_default_coding(""); const ASN_Tag_t GeographicalCoordinates_latitude_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GeographicalCoordinates_latitude_ber_ = { 1u, GeographicalCoordinates_latitude_tag_ }; // No XER for GeographicalCoordinates_latitude const int GeographicalCoordinates_latitude_oer_ext_arr_[0] = {}; const int GeographicalCoordinates_latitude_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalCoordinates_latitude_oer_ = { 4, FALSE, -1, FALSE, 0, 0, GeographicalCoordinates_latitude_oer_ext_arr_, 0, GeographicalCoordinates_latitude_oer_p_}; static Per_Integer_Constraint GeographicalCoordinates_latitude_per_cons_(new INTEGER(0), new INTEGER(8388607), FALSE); const ASN_PERdescriptor_t GeographicalCoordinates_latitude_per_ = { &GeographicalCoordinates_latitude_per_cons_ }; const TTCN_Typedescriptor_t GeographicalCoordinates_latitude_descr_ = { "@RANAP-IEs.GeographicalCoordinates.latitude", &GeographicalCoordinates_latitude_ber_, NULL, NULL, NULL, &INTEGER_json_, &GeographicalCoordinates_latitude_oer_, &GeographicalCoordinates_latitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalCoordinates_latitude_default_coding(""); const ASN_Tag_t GeographicalCoordinates_longitude_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GeographicalCoordinates_longitude_ber_ = { 1u, GeographicalCoordinates_longitude_tag_ }; // No XER for GeographicalCoordinates_longitude const int GeographicalCoordinates_longitude_oer_ext_arr_[0] = {}; const int GeographicalCoordinates_longitude_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalCoordinates_longitude_oer_ = { 4, TRUE, -1, FALSE, 0, 0, GeographicalCoordinates_longitude_oer_ext_arr_, 0, GeographicalCoordinates_longitude_oer_p_}; static Per_Integer_Constraint GeographicalCoordinates_longitude_per_cons_(new INTEGER(-8388608), new INTEGER(8388607), FALSE); const ASN_PERdescriptor_t GeographicalCoordinates_longitude_per_ = { &GeographicalCoordinates_longitude_per_cons_ }; const TTCN_Typedescriptor_t GeographicalCoordinates_longitude_descr_ = { "@RANAP-IEs.GeographicalCoordinates.longitude", &GeographicalCoordinates_longitude_ber_, NULL, NULL, NULL, &INTEGER_json_, &GeographicalCoordinates_longitude_oer_, &GeographicalCoordinates_longitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalCoordinates_longitude_default_coding(""); // No XER for GeographicalCoordinates const TTCN_JSONdescriptor_t GeographicalCoordinates_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GeographicalCoordinates_oer_ext_arr_[0] = {}; const int GeographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GeographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GeographicalCoordinates_oer_ext_arr_, 4, GeographicalCoordinates_oer_p_}; static const Per_Constraint GeographicalCoordinates_per_cons_; const ASN_PERdescriptor_t GeographicalCoordinates_per_ = { &GeographicalCoordinates_per_cons_ }; const TTCN_Typedescriptor_t GeographicalCoordinates_descr_ = { "@RANAP-IEs.GeographicalCoordinates", &SEQUENCE_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GeographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst20", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst20.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst20.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst20.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst20.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst20", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst20.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst20_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_default_coding(""); const ASN_Tag_t GeographicalCoordinates_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GeographicalCoordinates_iE__Extensions_ber_ = { 1u, GeographicalCoordinates_iE__Extensions_tag_ }; // No XER for GeographicalCoordinates_iE__Extensions const int GeographicalCoordinates_iE__Extensions_oer_ext_arr_[0] = {}; const int GeographicalCoordinates_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalCoordinates_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GeographicalCoordinates_iE__Extensions_oer_ext_arr_, 0, GeographicalCoordinates_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GeographicalCoordinates_iE__Extensions_descr_ = { "@RANAP-IEs.GeographicalCoordinates.iE-Extensions", &GeographicalCoordinates_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_json_, &GeographicalCoordinates_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst20_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalCoordinates_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GeographicalCoordinates_default_coding(""); const ASN_Tag_t GA__Point_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__Point_geographicalCoordinates_ber_ = { 1u, GA__Point_geographicalCoordinates_tag_ }; // No XER for GA__Point_geographicalCoordinates const int GA__Point_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__Point_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__Point_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__Point_geographicalCoordinates_oer_ext_arr_, 4, GA__Point_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__Point_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-Point.geographicalCoordinates", &GA__Point_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__Point_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__Point_geographicalCoordinates_default_coding(""); // No XER for GA__Point const TTCN_JSONdescriptor_t GA__Point_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__Point_oer_ext_arr_[0] = {}; const int GA__Point_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GA__Point_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GA__Point_oer_ext_arr_, 2, GA__Point_oer_p_}; static const Per_Constraint GA__Point_per_cons_; const ASN_PERdescriptor_t GA__Point_per_ = { &GA__Point_per_cons_ }; const TTCN_Typedescriptor_t GA__Point_descr_ = { "@RANAP-IEs.GA-Point", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__Point_json_, &GA__Point_oer_, &GA__Point_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst21", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst21.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst21.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst21.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst21.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst21", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst21.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst21_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_default_coding(""); const ASN_Tag_t GA__Point_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__Point_iE__Extensions_ber_ = { 1u, GA__Point_iE__Extensions_tag_ }; // No XER for GA__Point_iE__Extensions const int GA__Point_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__Point_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__Point_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__Point_iE__Extensions_oer_ext_arr_, 0, GA__Point_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__Point_iE__Extensions_descr_ = { "@RANAP-IEs.GA-Point.iE-Extensions", &GA__Point_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_json_, &GA__Point_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst21_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__Point_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__Point_default_coding(""); const ASN_Tag_t GeographicalArea_point_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GeographicalArea_point_ber_ = { 1u, GeographicalArea_point_tag_ }; // No XER for GeographicalArea_point const int GeographicalArea_point_oer_ext_arr_[0] = {}; const int GeographicalArea_point_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GeographicalArea_point_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GeographicalArea_point_oer_ext_arr_, 2, GeographicalArea_point_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_point_descr_ = { "@RANAP-IEs.GeographicalArea.point", &GeographicalArea_point_ber_, NULL, NULL, NULL, &GA__Point_json_, &GeographicalArea_point_oer_, &GA__Point_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_point_default_coding(""); const ASN_Tag_t GA__PointWithUnCertainty_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__PointWithUnCertainty_geographicalCoordinates_ber_ = { 1u, GA__PointWithUnCertainty_geographicalCoordinates_tag_ }; // No XER for GA__PointWithUnCertainty_geographicalCoordinates const int GA__PointWithUnCertainty_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertainty_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__PointWithUnCertainty_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__PointWithUnCertainty_geographicalCoordinates_oer_ext_arr_, 4, GA__PointWithUnCertainty_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithUnCertainty_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-PointWithUnCertainty.geographicalCoordinates", &GA__PointWithUnCertainty_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__PointWithUnCertainty_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertainty_geographicalCoordinates_default_coding(""); const ASN_Tag_t GA__PointWithUnCertainty_uncertaintyCode_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__PointWithUnCertainty_uncertaintyCode_ber_ = { 1u, GA__PointWithUnCertainty_uncertaintyCode_tag_ }; // No XER for GA__PointWithUnCertainty_uncertaintyCode const int GA__PointWithUnCertainty_uncertaintyCode_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertainty_uncertaintyCode_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithUnCertainty_uncertaintyCode_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__PointWithUnCertainty_uncertaintyCode_oer_ext_arr_, 0, GA__PointWithUnCertainty_uncertaintyCode_oer_p_}; static Per_Integer_Constraint GA__PointWithUnCertainty_uncertaintyCode_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__PointWithUnCertainty_uncertaintyCode_per_ = { &GA__PointWithUnCertainty_uncertaintyCode_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithUnCertainty_uncertaintyCode_descr_ = { "@RANAP-IEs.GA-PointWithUnCertainty.uncertaintyCode", &GA__PointWithUnCertainty_uncertaintyCode_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__PointWithUnCertainty_uncertaintyCode_oer_, &GA__PointWithUnCertainty_uncertaintyCode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertainty_uncertaintyCode_default_coding(""); // No XER for GA__PointWithUnCertainty const TTCN_JSONdescriptor_t GA__PointWithUnCertainty_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__PointWithUnCertainty_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertainty_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GA__PointWithUnCertainty_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__PointWithUnCertainty_oer_ext_arr_, 3, GA__PointWithUnCertainty_oer_p_}; static const Per_Constraint GA__PointWithUnCertainty_per_cons_; const ASN_PERdescriptor_t GA__PointWithUnCertainty_per_ = { &GA__PointWithUnCertainty_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithUnCertainty_descr_ = { "@RANAP-IEs.GA-PointWithUnCertainty", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__PointWithUnCertainty_json_, &GA__PointWithUnCertainty_oer_, &GA__PointWithUnCertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst22", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst22.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst22.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst22.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst22.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst22", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst22.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst22_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_default_coding(""); const ASN_Tag_t GA__PointWithUnCertainty_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__PointWithUnCertainty_iE__Extensions_ber_ = { 1u, GA__PointWithUnCertainty_iE__Extensions_tag_ }; // No XER for GA__PointWithUnCertainty_iE__Extensions const int GA__PointWithUnCertainty_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertainty_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithUnCertainty_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__PointWithUnCertainty_iE__Extensions_oer_ext_arr_, 0, GA__PointWithUnCertainty_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithUnCertainty_iE__Extensions_descr_ = { "@RANAP-IEs.GA-PointWithUnCertainty.iE-Extensions", &GA__PointWithUnCertainty_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_json_, &GA__PointWithUnCertainty_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst22_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertainty_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__PointWithUnCertainty_default_coding(""); const ASN_Tag_t GeographicalArea_pointWithUnCertainty_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GeographicalArea_pointWithUnCertainty_ber_ = { 1u, GeographicalArea_pointWithUnCertainty_tag_ }; // No XER for GeographicalArea_pointWithUnCertainty const int GeographicalArea_pointWithUnCertainty_oer_ext_arr_[0] = {}; const int GeographicalArea_pointWithUnCertainty_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GeographicalArea_pointWithUnCertainty_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GeographicalArea_pointWithUnCertainty_oer_ext_arr_, 3, GeographicalArea_pointWithUnCertainty_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_pointWithUnCertainty_descr_ = { "@RANAP-IEs.GeographicalArea.pointWithUnCertainty", &GeographicalArea_pointWithUnCertainty_ber_, NULL, NULL, NULL, &GA__PointWithUnCertainty_json_, &GeographicalArea_pointWithUnCertainty_oer_, &GA__PointWithUnCertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_pointWithUnCertainty_default_coding(""); // No XER for GA__Polygon const TTCN_JSONdescriptor_t GA__Polygon_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__Polygon_oer_ext_arr_[0] = {}; const int GA__Polygon_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__Polygon_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__Polygon_oer_ext_arr_, 0, GA__Polygon_oer_p_}; static Per_Integer_Constraint GA__Polygon_per_cons_(new INTEGER(1), new INTEGER(15), FALSE); const ASN_PERdescriptor_t GA__Polygon_per_ = { &GA__Polygon_per_cons_ }; const TTCN_Typedescriptor_t GA__Polygon_descr_ = { "@RANAP-IEs.GA-Polygon", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__Polygon_json_, &GA__Polygon_oer_, &GA__Polygon_per_, &GA__Polygon_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t GA__Polygon_0_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__Polygon_0_geographicalCoordinates_ber_ = { 1u, GA__Polygon_0_geographicalCoordinates_tag_ }; // No XER for GA__Polygon_0_geographicalCoordinates const int GA__Polygon_0_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__Polygon_0_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__Polygon_0_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__Polygon_0_geographicalCoordinates_oer_ext_arr_, 4, GA__Polygon_0_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__Polygon_0_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-Polygon.SEQUENCE.geographicalCoordinates", &GA__Polygon_0_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__Polygon_0_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__Polygon_0_geographicalCoordinates_default_coding(""); // No XER for GA__Polygon_0 const TTCN_JSONdescriptor_t GA__Polygon_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__Polygon_0_oer_ext_arr_[0] = {}; const int GA__Polygon_0_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GA__Polygon_0_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GA__Polygon_0_oer_ext_arr_, 2, GA__Polygon_0_oer_p_}; static const Per_Constraint GA__Polygon_0_per_cons_; const ASN_PERdescriptor_t GA__Polygon_0_per_ = { &GA__Polygon_0_per_cons_ }; const TTCN_Typedescriptor_t GA__Polygon_0_descr_ = { "@RANAP-IEs.GA-Polygon.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__Polygon_0_json_, &GA__Polygon_0_oer_, &GA__Polygon_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst23", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst23.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst23.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst23.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst23.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst23", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst23.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst23_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_default_coding(""); const ASN_Tag_t GA__Polygon_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__Polygon_0_iE__Extensions_ber_ = { 1u, GA__Polygon_0_iE__Extensions_tag_ }; // No XER for GA__Polygon_0_iE__Extensions const int GA__Polygon_0_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__Polygon_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__Polygon_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__Polygon_0_iE__Extensions_oer_ext_arr_, 0, GA__Polygon_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__Polygon_0_iE__Extensions_descr_ = { "@RANAP-IEs.GA-Polygon.SEQUENCE.iE-Extensions", &GA__Polygon_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_json_, &GA__Polygon_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst23_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__Polygon_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__Polygon_0_default_coding(""); UNIVERSAL_CHARSTRING GA__Polygon_default_coding(""); const ASN_Tag_t GeographicalArea_polygon_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GeographicalArea_polygon_ber_ = { 1u, GeographicalArea_polygon_tag_ }; // No XER for GeographicalArea_polygon const int GeographicalArea_polygon_oer_ext_arr_[0] = {}; const int GeographicalArea_polygon_oer_p_[0] = {}; const TTCN_OERdescriptor_t GeographicalArea_polygon_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GeographicalArea_polygon_oer_ext_arr_, 0, GeographicalArea_polygon_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_polygon_descr_ = { "@RANAP-IEs.GeographicalArea.polygon", &GeographicalArea_polygon_ber_, NULL, NULL, NULL, &GA__Polygon_json_, &GeographicalArea_polygon_oer_, &GA__Polygon_per_, &GA__Polygon_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_polygon_default_coding(""); const ASN_Tag_t GA__PointWithUnCertaintyEllipse_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__PointWithUnCertaintyEllipse_geographicalCoordinates_ber_ = { 1u, GA__PointWithUnCertaintyEllipse_geographicalCoordinates_tag_ }; // No XER for GA__PointWithUnCertaintyEllipse_geographicalCoordinates const int GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_ext_arr_, 4, GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithUnCertaintyEllipse_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-PointWithUnCertaintyEllipse.geographicalCoordinates", &GA__PointWithUnCertaintyEllipse_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__PointWithUnCertaintyEllipse_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertaintyEllipse_geographicalCoordinates_default_coding(""); const ASN_Tag_t GA__UncertaintyEllipse_uncertaintySemi__major_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__major_ber_ = { 1u, GA__UncertaintyEllipse_uncertaintySemi__major_tag_ }; // No XER for GA__UncertaintyEllipse_uncertaintySemi__major const int GA__UncertaintyEllipse_uncertaintySemi__major_oer_ext_arr_[0] = {}; const int GA__UncertaintyEllipse_uncertaintySemi__major_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__major_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__UncertaintyEllipse_uncertaintySemi__major_oer_ext_arr_, 0, GA__UncertaintyEllipse_uncertaintySemi__major_oer_p_}; static Per_Integer_Constraint GA__UncertaintyEllipse_uncertaintySemi__major_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__major_per_ = { &GA__UncertaintyEllipse_uncertaintySemi__major_per_cons_ }; const TTCN_Typedescriptor_t GA__UncertaintyEllipse_uncertaintySemi__major_descr_ = { "@RANAP-IEs.GA-UncertaintyEllipse.uncertaintySemi-major", &GA__UncertaintyEllipse_uncertaintySemi__major_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__UncertaintyEllipse_uncertaintySemi__major_oer_, &GA__UncertaintyEllipse_uncertaintySemi__major_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__UncertaintyEllipse_uncertaintySemi__major_default_coding(""); const ASN_Tag_t GA__UncertaintyEllipse_uncertaintySemi__minor_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__minor_ber_ = { 1u, GA__UncertaintyEllipse_uncertaintySemi__minor_tag_ }; // No XER for GA__UncertaintyEllipse_uncertaintySemi__minor const int GA__UncertaintyEllipse_uncertaintySemi__minor_oer_ext_arr_[0] = {}; const int GA__UncertaintyEllipse_uncertaintySemi__minor_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__minor_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__UncertaintyEllipse_uncertaintySemi__minor_oer_ext_arr_, 0, GA__UncertaintyEllipse_uncertaintySemi__minor_oer_p_}; static Per_Integer_Constraint GA__UncertaintyEllipse_uncertaintySemi__minor_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__UncertaintyEllipse_uncertaintySemi__minor_per_ = { &GA__UncertaintyEllipse_uncertaintySemi__minor_per_cons_ }; const TTCN_Typedescriptor_t GA__UncertaintyEllipse_uncertaintySemi__minor_descr_ = { "@RANAP-IEs.GA-UncertaintyEllipse.uncertaintySemi-minor", &GA__UncertaintyEllipse_uncertaintySemi__minor_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__UncertaintyEllipse_uncertaintySemi__minor_oer_, &GA__UncertaintyEllipse_uncertaintySemi__minor_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__UncertaintyEllipse_uncertaintySemi__minor_default_coding(""); const ASN_Tag_t GA__UncertaintyEllipse_orientationOfMajorAxis_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__UncertaintyEllipse_orientationOfMajorAxis_ber_ = { 1u, GA__UncertaintyEllipse_orientationOfMajorAxis_tag_ }; // No XER for GA__UncertaintyEllipse_orientationOfMajorAxis const int GA__UncertaintyEllipse_orientationOfMajorAxis_oer_ext_arr_[0] = {}; const int GA__UncertaintyEllipse_orientationOfMajorAxis_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__UncertaintyEllipse_orientationOfMajorAxis_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__UncertaintyEllipse_orientationOfMajorAxis_oer_ext_arr_, 0, GA__UncertaintyEllipse_orientationOfMajorAxis_oer_p_}; static Per_Integer_Constraint GA__UncertaintyEllipse_orientationOfMajorAxis_per_cons_(new INTEGER(0), new INTEGER(179), FALSE); const ASN_PERdescriptor_t GA__UncertaintyEllipse_orientationOfMajorAxis_per_ = { &GA__UncertaintyEllipse_orientationOfMajorAxis_per_cons_ }; const TTCN_Typedescriptor_t GA__UncertaintyEllipse_orientationOfMajorAxis_descr_ = { "@RANAP-IEs.GA-UncertaintyEllipse.orientationOfMajorAxis", &GA__UncertaintyEllipse_orientationOfMajorAxis_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__UncertaintyEllipse_orientationOfMajorAxis_oer_, &GA__UncertaintyEllipse_orientationOfMajorAxis_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__UncertaintyEllipse_orientationOfMajorAxis_default_coding(""); // No XER for GA__UncertaintyEllipse const TTCN_JSONdescriptor_t GA__UncertaintyEllipse_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__UncertaintyEllipse_oer_ext_arr_[0] = {}; const int GA__UncertaintyEllipse_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GA__UncertaintyEllipse_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GA__UncertaintyEllipse_oer_ext_arr_, 3, GA__UncertaintyEllipse_oer_p_}; static const Per_Constraint GA__UncertaintyEllipse_per_cons_; const ASN_PERdescriptor_t GA__UncertaintyEllipse_per_ = { &GA__UncertaintyEllipse_per_cons_ }; const TTCN_Typedescriptor_t GA__UncertaintyEllipse_descr_ = { "@RANAP-IEs.GA-UncertaintyEllipse", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__UncertaintyEllipse_json_, &GA__UncertaintyEllipse_oer_, &GA__UncertaintyEllipse_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__UncertaintyEllipse_default_coding(""); const ASN_Tag_t GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_ber_ = { 1u, GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_tag_ }; // No XER for GA__PointWithUnCertaintyEllipse_uncertaintyEllipse const int GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_ext_arr_, 3, GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_descr_ = { "@RANAP-IEs.GA-PointWithUnCertaintyEllipse.uncertaintyEllipse", &GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_ber_, NULL, NULL, NULL, &GA__UncertaintyEllipse_json_, &GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_oer_, &GA__UncertaintyEllipse_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertaintyEllipse_uncertaintyEllipse_default_coding(""); const ASN_Tag_t GA__PointWithUnCertaintyEllipse_confidence_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__PointWithUnCertaintyEllipse_confidence_ber_ = { 1u, GA__PointWithUnCertaintyEllipse_confidence_tag_ }; // No XER for GA__PointWithUnCertaintyEllipse_confidence const int GA__PointWithUnCertaintyEllipse_confidence_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertaintyEllipse_confidence_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithUnCertaintyEllipse_confidence_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__PointWithUnCertaintyEllipse_confidence_oer_ext_arr_, 0, GA__PointWithUnCertaintyEllipse_confidence_oer_p_}; static Per_Integer_Constraint GA__PointWithUnCertaintyEllipse_confidence_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__PointWithUnCertaintyEllipse_confidence_per_ = { &GA__PointWithUnCertaintyEllipse_confidence_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithUnCertaintyEllipse_confidence_descr_ = { "@RANAP-IEs.GA-PointWithUnCertaintyEllipse.confidence", &GA__PointWithUnCertaintyEllipse_confidence_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__PointWithUnCertaintyEllipse_confidence_oer_, &GA__PointWithUnCertaintyEllipse_confidence_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertaintyEllipse_confidence_default_coding(""); // No XER for GA__PointWithUnCertaintyEllipse const TTCN_JSONdescriptor_t GA__PointWithUnCertaintyEllipse_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__PointWithUnCertaintyEllipse_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertaintyEllipse_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__PointWithUnCertaintyEllipse_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__PointWithUnCertaintyEllipse_oer_ext_arr_, 4, GA__PointWithUnCertaintyEllipse_oer_p_}; static const Per_Constraint GA__PointWithUnCertaintyEllipse_per_cons_; const ASN_PERdescriptor_t GA__PointWithUnCertaintyEllipse_per_ = { &GA__PointWithUnCertaintyEllipse_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithUnCertaintyEllipse_descr_ = { "@RANAP-IEs.GA-PointWithUnCertaintyEllipse", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__PointWithUnCertaintyEllipse_json_, &GA__PointWithUnCertaintyEllipse_oer_, &GA__PointWithUnCertaintyEllipse_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst24", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst24.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst24.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst24.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst24.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst24", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst24.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst24_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_default_coding(""); const ASN_Tag_t GA__PointWithUnCertaintyEllipse_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GA__PointWithUnCertaintyEllipse_iE__Extensions_ber_ = { 1u, GA__PointWithUnCertaintyEllipse_iE__Extensions_tag_ }; // No XER for GA__PointWithUnCertaintyEllipse_iE__Extensions const int GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_ext_arr_, 0, GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithUnCertaintyEllipse_iE__Extensions_descr_ = { "@RANAP-IEs.GA-PointWithUnCertaintyEllipse.iE-Extensions", &GA__PointWithUnCertaintyEllipse_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_json_, &GA__PointWithUnCertaintyEllipse_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst24_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithUnCertaintyEllipse_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__PointWithUnCertaintyEllipse_default_coding(""); const ASN_Tag_t GeographicalArea_pointWithUncertaintyEllipse_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GeographicalArea_pointWithUncertaintyEllipse_ber_ = { 1u, GeographicalArea_pointWithUncertaintyEllipse_tag_ }; // No XER for GeographicalArea_pointWithUncertaintyEllipse const int GeographicalArea_pointWithUncertaintyEllipse_oer_ext_arr_[0] = {}; const int GeographicalArea_pointWithUncertaintyEllipse_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GeographicalArea_pointWithUncertaintyEllipse_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GeographicalArea_pointWithUncertaintyEllipse_oer_ext_arr_, 4, GeographicalArea_pointWithUncertaintyEllipse_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_pointWithUncertaintyEllipse_descr_ = { "@RANAP-IEs.GeographicalArea.pointWithUncertaintyEllipse", &GeographicalArea_pointWithUncertaintyEllipse_ber_, NULL, NULL, NULL, &GA__PointWithUnCertaintyEllipse_json_, &GeographicalArea_pointWithUncertaintyEllipse_oer_, &GA__PointWithUnCertaintyEllipse_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_pointWithUncertaintyEllipse_default_coding(""); const ASN_Tag_t GA__PointWithAltitude_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__PointWithAltitude_geographicalCoordinates_ber_ = { 1u, GA__PointWithAltitude_geographicalCoordinates_tag_ }; // No XER for GA__PointWithAltitude_geographicalCoordinates const int GA__PointWithAltitude_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__PointWithAltitude_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__PointWithAltitude_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__PointWithAltitude_geographicalCoordinates_oer_ext_arr_, 4, GA__PointWithAltitude_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitude_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-PointWithAltitude.geographicalCoordinates", &GA__PointWithAltitude_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__PointWithAltitude_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitude_geographicalCoordinates_default_coding(""); const ASN_Tag_t GA__AltitudeAndDirection_directionOfAltitude_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__AltitudeAndDirection_directionOfAltitude_ber_ = { 1u, GA__AltitudeAndDirection_directionOfAltitude_tag_ }; // No XER for GA__AltitudeAndDirection_directionOfAltitude const TTCN_JSONdescriptor_t GA__AltitudeAndDirection_directionOfAltitude_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__AltitudeAndDirection_directionOfAltitude_oer_ext_arr_[0] = {}; const int GA__AltitudeAndDirection_directionOfAltitude_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__AltitudeAndDirection_directionOfAltitude_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__AltitudeAndDirection_directionOfAltitude_oer_ext_arr_, 0, GA__AltitudeAndDirection_directionOfAltitude_oer_p_}; static const Per_Constraint GA__AltitudeAndDirection_directionOfAltitude_per_cons_; const ASN_PERdescriptor_t GA__AltitudeAndDirection_directionOfAltitude_per_ = { &GA__AltitudeAndDirection_directionOfAltitude_per_cons_ }; const TTCN_Typedescriptor_t GA__AltitudeAndDirection_directionOfAltitude_descr_ = { "@RANAP-IEs.GA-AltitudeAndDirection.directionOfAltitude", &GA__AltitudeAndDirection_directionOfAltitude_ber_, NULL, NULL, NULL, &GA__AltitudeAndDirection_directionOfAltitude_json_, &GA__AltitudeAndDirection_directionOfAltitude_oer_, &GA__AltitudeAndDirection_directionOfAltitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__AltitudeAndDirection_directionOfAltitude_default_coding(""); const ASN_Tag_t GA__AltitudeAndDirection_altitude_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__AltitudeAndDirection_altitude_ber_ = { 1u, GA__AltitudeAndDirection_altitude_tag_ }; // No XER for GA__AltitudeAndDirection_altitude const int GA__AltitudeAndDirection_altitude_oer_ext_arr_[0] = {}; const int GA__AltitudeAndDirection_altitude_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__AltitudeAndDirection_altitude_oer_ = { 2, FALSE, -1, FALSE, 0, 0, GA__AltitudeAndDirection_altitude_oer_ext_arr_, 0, GA__AltitudeAndDirection_altitude_oer_p_}; static Per_Integer_Constraint GA__AltitudeAndDirection_altitude_per_cons_(new INTEGER(0), new INTEGER(32767), FALSE); const ASN_PERdescriptor_t GA__AltitudeAndDirection_altitude_per_ = { &GA__AltitudeAndDirection_altitude_per_cons_ }; const TTCN_Typedescriptor_t GA__AltitudeAndDirection_altitude_descr_ = { "@RANAP-IEs.GA-AltitudeAndDirection.altitude", &GA__AltitudeAndDirection_altitude_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__AltitudeAndDirection_altitude_oer_, &GA__AltitudeAndDirection_altitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__AltitudeAndDirection_altitude_default_coding(""); // No XER for GA__AltitudeAndDirection const TTCN_JSONdescriptor_t GA__AltitudeAndDirection_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__AltitudeAndDirection_oer_ext_arr_[0] = {}; const int GA__AltitudeAndDirection_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GA__AltitudeAndDirection_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GA__AltitudeAndDirection_oer_ext_arr_, 2, GA__AltitudeAndDirection_oer_p_}; static const Per_Constraint GA__AltitudeAndDirection_per_cons_; const ASN_PERdescriptor_t GA__AltitudeAndDirection_per_ = { &GA__AltitudeAndDirection_per_cons_ }; const TTCN_Typedescriptor_t GA__AltitudeAndDirection_descr_ = { "@RANAP-IEs.GA-AltitudeAndDirection", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__AltitudeAndDirection_json_, &GA__AltitudeAndDirection_oer_, &GA__AltitudeAndDirection_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__AltitudeAndDirection_default_coding(""); const ASN_Tag_t GA__PointWithAltitude_altitudeAndDirection_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__PointWithAltitude_altitudeAndDirection_ber_ = { 1u, GA__PointWithAltitude_altitudeAndDirection_tag_ }; // No XER for GA__PointWithAltitude_altitudeAndDirection const int GA__PointWithAltitude_altitudeAndDirection_oer_ext_arr_[0] = {}; const int GA__PointWithAltitude_altitudeAndDirection_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GA__PointWithAltitude_altitudeAndDirection_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GA__PointWithAltitude_altitudeAndDirection_oer_ext_arr_, 2, GA__PointWithAltitude_altitudeAndDirection_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitude_altitudeAndDirection_descr_ = { "@RANAP-IEs.GA-PointWithAltitude.altitudeAndDirection", &GA__PointWithAltitude_altitudeAndDirection_ber_, NULL, NULL, NULL, &GA__AltitudeAndDirection_json_, &GA__PointWithAltitude_altitudeAndDirection_oer_, &GA__AltitudeAndDirection_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitude_altitudeAndDirection_default_coding(""); // No XER for GA__PointWithAltitude const TTCN_JSONdescriptor_t GA__PointWithAltitude_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__PointWithAltitude_oer_ext_arr_[0] = {}; const int GA__PointWithAltitude_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GA__PointWithAltitude_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GA__PointWithAltitude_oer_ext_arr_, 3, GA__PointWithAltitude_oer_p_}; static const Per_Constraint GA__PointWithAltitude_per_cons_; const ASN_PERdescriptor_t GA__PointWithAltitude_per_ = { &GA__PointWithAltitude_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithAltitude_descr_ = { "@RANAP-IEs.GA-PointWithAltitude", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__PointWithAltitude_json_, &GA__PointWithAltitude_oer_, &GA__PointWithAltitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst25", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst25.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst25.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst25.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst25.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst25", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst25.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst25_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_default_coding(""); const ASN_Tag_t GA__PointWithAltitude_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__PointWithAltitude_iE__Extensions_ber_ = { 1u, GA__PointWithAltitude_iE__Extensions_tag_ }; // No XER for GA__PointWithAltitude_iE__Extensions const int GA__PointWithAltitude_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__PointWithAltitude_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithAltitude_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__PointWithAltitude_iE__Extensions_oer_ext_arr_, 0, GA__PointWithAltitude_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitude_iE__Extensions_descr_ = { "@RANAP-IEs.GA-PointWithAltitude.iE-Extensions", &GA__PointWithAltitude_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_json_, &GA__PointWithAltitude_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst25_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitude_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__PointWithAltitude_default_coding(""); const ASN_Tag_t GeographicalArea_pointWithAltitude_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t GeographicalArea_pointWithAltitude_ber_ = { 1u, GeographicalArea_pointWithAltitude_tag_ }; // No XER for GeographicalArea_pointWithAltitude const int GeographicalArea_pointWithAltitude_oer_ext_arr_[0] = {}; const int GeographicalArea_pointWithAltitude_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GeographicalArea_pointWithAltitude_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GeographicalArea_pointWithAltitude_oer_ext_arr_, 3, GeographicalArea_pointWithAltitude_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_pointWithAltitude_descr_ = { "@RANAP-IEs.GeographicalArea.pointWithAltitude", &GeographicalArea_pointWithAltitude_ber_, NULL, NULL, NULL, &GA__PointWithAltitude_json_, &GeographicalArea_pointWithAltitude_oer_, &GA__PointWithAltitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_pointWithAltitude_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates const int GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_ext_arr_, 4, GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.geographicalCoordinates", &GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_geographicalCoordinates_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection const int GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_ = { -1, TRUE, -1, TRUE, 2, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_ext_arr_, 2, GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.altitudeAndDirection", &GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_ber_, NULL, NULL, NULL, &GA__AltitudeAndDirection_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_oer_, &GA__AltitudeAndDirection_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_altitudeAndDirection_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse const int GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_ = { -1, TRUE, -1, TRUE, 3, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_ext_arr_, 3, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.uncertaintyEllipse", &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_ber_, NULL, NULL, NULL, &GA__UncertaintyEllipse_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_oer_, &GA__UncertaintyEllipse_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyEllipse_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude const int GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_ext_arr_, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_p_}; static Per_Integer_Constraint GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_per_ = { &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.uncertaintyAltitude", &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_oer_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_uncertaintyAltitude_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence const int GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_ext_arr_, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_p_}; static Per_Integer_Constraint GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_per_ = { &GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.confidence", &GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_oer_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_confidence_default_coding(""); // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid const TTCN_JSONdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_p_[6] = {0, 1, 2, 3, 4, 5}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_ = { -1, TRUE, -1, TRUE, 6, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_ext_arr_, 6, GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_p_}; static const Per_Constraint GA__PointWithAltitudeAndUncertaintyEllipsoid_per_cons_; const ASN_PERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_per_ = { &GA__PointWithAltitudeAndUncertaintyEllipsoid_per_cons_ }; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__PointWithAltitudeAndUncertaintyEllipsoid_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_oer_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst26", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst26.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst26.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst26.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst26.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst26", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst26.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst26_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_default_coding(""); const ASN_Tag_t GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_ber_ = { 1u, GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_tag_ }; // No XER for GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions const int GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_ext_arr_, 0, GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_descr_ = { "@RANAP-IEs.GA-PointWithAltitudeAndUncertaintyEllipsoid.iE-Extensions", &GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_json_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst26_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__PointWithAltitudeAndUncertaintyEllipsoid_default_coding(""); const ASN_Tag_t GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_ber_ = { 1u, GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_tag_ }; // No XER for GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid const int GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_ext_arr_[0] = {}; const int GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_p_[6] = {0, 1, 2, 3, 4, 5}; const TTCN_OERdescriptor_t GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_ = { -1, TRUE, -1, TRUE, 6, 0, GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_ext_arr_, 6, GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_descr_ = { "@RANAP-IEs.GeographicalArea.pointWithAltitudeAndUncertaintyEllipsoid", &GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_ber_, NULL, NULL, NULL, &GA__PointWithAltitudeAndUncertaintyEllipsoid_json_, &GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_oer_, &GA__PointWithAltitudeAndUncertaintyEllipsoid_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_pointWithAltitudeAndUncertaintyEllipsoid_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_geographicalCoordinates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_geographicalCoordinates_ber_ = { 1u, GA__EllipsoidArc_geographicalCoordinates_tag_ }; // No XER for GA__EllipsoidArc_geographicalCoordinates const int GA__EllipsoidArc_geographicalCoordinates_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_geographicalCoordinates_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GA__EllipsoidArc_geographicalCoordinates_oer_ = { -1, TRUE, -1, TRUE, 4, 0, GA__EllipsoidArc_geographicalCoordinates_oer_ext_arr_, 4, GA__EllipsoidArc_geographicalCoordinates_oer_p_}; const TTCN_Typedescriptor_t GA__EllipsoidArc_geographicalCoordinates_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.geographicalCoordinates", &GA__EllipsoidArc_geographicalCoordinates_ber_, NULL, NULL, NULL, &GeographicalCoordinates_json_, &GA__EllipsoidArc_geographicalCoordinates_oer_, &GeographicalCoordinates_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_geographicalCoordinates_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_innerRadius_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_innerRadius_ber_ = { 1u, GA__EllipsoidArc_innerRadius_tag_ }; // No XER for GA__EllipsoidArc_innerRadius const int GA__EllipsoidArc_innerRadius_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_innerRadius_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_innerRadius_oer_ = { 2, FALSE, -1, FALSE, 0, 0, GA__EllipsoidArc_innerRadius_oer_ext_arr_, 0, GA__EllipsoidArc_innerRadius_oer_p_}; static Per_Integer_Constraint GA__EllipsoidArc_innerRadius_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t GA__EllipsoidArc_innerRadius_per_ = { &GA__EllipsoidArc_innerRadius_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_innerRadius_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.innerRadius", &GA__EllipsoidArc_innerRadius_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__EllipsoidArc_innerRadius_oer_, &GA__EllipsoidArc_innerRadius_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_innerRadius_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_uncertaintyRadius_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_uncertaintyRadius_ber_ = { 1u, GA__EllipsoidArc_uncertaintyRadius_tag_ }; // No XER for GA__EllipsoidArc_uncertaintyRadius const int GA__EllipsoidArc_uncertaintyRadius_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_uncertaintyRadius_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_uncertaintyRadius_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__EllipsoidArc_uncertaintyRadius_oer_ext_arr_, 0, GA__EllipsoidArc_uncertaintyRadius_oer_p_}; static Per_Integer_Constraint GA__EllipsoidArc_uncertaintyRadius_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__EllipsoidArc_uncertaintyRadius_per_ = { &GA__EllipsoidArc_uncertaintyRadius_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_uncertaintyRadius_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.uncertaintyRadius", &GA__EllipsoidArc_uncertaintyRadius_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__EllipsoidArc_uncertaintyRadius_oer_, &GA__EllipsoidArc_uncertaintyRadius_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_uncertaintyRadius_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_offsetAngle_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_offsetAngle_ber_ = { 1u, GA__EllipsoidArc_offsetAngle_tag_ }; // No XER for GA__EllipsoidArc_offsetAngle const int GA__EllipsoidArc_offsetAngle_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_offsetAngle_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_offsetAngle_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__EllipsoidArc_offsetAngle_oer_ext_arr_, 0, GA__EllipsoidArc_offsetAngle_oer_p_}; static Per_Integer_Constraint GA__EllipsoidArc_offsetAngle_per_cons_(new INTEGER(0), new INTEGER(179), FALSE); const ASN_PERdescriptor_t GA__EllipsoidArc_offsetAngle_per_ = { &GA__EllipsoidArc_offsetAngle_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_offsetAngle_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.offsetAngle", &GA__EllipsoidArc_offsetAngle_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__EllipsoidArc_offsetAngle_oer_, &GA__EllipsoidArc_offsetAngle_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_offsetAngle_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_includedAngle_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_includedAngle_ber_ = { 1u, GA__EllipsoidArc_includedAngle_tag_ }; // No XER for GA__EllipsoidArc_includedAngle const int GA__EllipsoidArc_includedAngle_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_includedAngle_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_includedAngle_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__EllipsoidArc_includedAngle_oer_ext_arr_, 0, GA__EllipsoidArc_includedAngle_oer_p_}; static Per_Integer_Constraint GA__EllipsoidArc_includedAngle_per_cons_(new INTEGER(0), new INTEGER(179), FALSE); const ASN_PERdescriptor_t GA__EllipsoidArc_includedAngle_per_ = { &GA__EllipsoidArc_includedAngle_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_includedAngle_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.includedAngle", &GA__EllipsoidArc_includedAngle_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__EllipsoidArc_includedAngle_oer_, &GA__EllipsoidArc_includedAngle_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_includedAngle_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_confidence_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_confidence_ber_ = { 1u, GA__EllipsoidArc_confidence_tag_ }; // No XER for GA__EllipsoidArc_confidence const int GA__EllipsoidArc_confidence_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_confidence_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_confidence_oer_ = { 1, FALSE, -1, FALSE, 0, 0, GA__EllipsoidArc_confidence_oer_ext_arr_, 0, GA__EllipsoidArc_confidence_oer_p_}; static Per_Integer_Constraint GA__EllipsoidArc_confidence_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t GA__EllipsoidArc_confidence_per_ = { &GA__EllipsoidArc_confidence_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_confidence_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.confidence", &GA__EllipsoidArc_confidence_ber_, NULL, NULL, NULL, &INTEGER_json_, &GA__EllipsoidArc_confidence_oer_, &GA__EllipsoidArc_confidence_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_confidence_default_coding(""); // No XER for GA__EllipsoidArc const TTCN_JSONdescriptor_t GA__EllipsoidArc_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GA__EllipsoidArc_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_oer_p_[7] = {0, 1, 2, 3, 4, 5, 6}; const TTCN_OERdescriptor_t GA__EllipsoidArc_oer_ = { -1, TRUE, -1, TRUE, 7, 0, GA__EllipsoidArc_oer_ext_arr_, 7, GA__EllipsoidArc_oer_p_}; static const Per_Constraint GA__EllipsoidArc_per_cons_; const ASN_PERdescriptor_t GA__EllipsoidArc_per_ = { &GA__EllipsoidArc_per_cons_ }; const TTCN_Typedescriptor_t GA__EllipsoidArc_descr_ = { "@RANAP-IEs.GA-EllipsoidArc", &SEQUENCE_ber_, NULL, NULL, NULL, &GA__EllipsoidArc_json_, &GA__EllipsoidArc_oer_, &GA__EllipsoidArc_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst27", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst27.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst27.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst27.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst27.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst27", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst27.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst27_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_default_coding(""); const ASN_Tag_t GA__EllipsoidArc_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t GA__EllipsoidArc_iE__Extensions_ber_ = { 1u, GA__EllipsoidArc_iE__Extensions_tag_ }; // No XER for GA__EllipsoidArc_iE__Extensions const int GA__EllipsoidArc_iE__Extensions_oer_ext_arr_[0] = {}; const int GA__EllipsoidArc_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GA__EllipsoidArc_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GA__EllipsoidArc_iE__Extensions_oer_ext_arr_, 0, GA__EllipsoidArc_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GA__EllipsoidArc_iE__Extensions_descr_ = { "@RANAP-IEs.GA-EllipsoidArc.iE-Extensions", &GA__EllipsoidArc_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_json_, &GA__EllipsoidArc_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst27_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GA__EllipsoidArc_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GA__EllipsoidArc_default_coding(""); const ASN_Tag_t GeographicalArea_ellipsoidArc_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t GeographicalArea_ellipsoidArc_ber_ = { 1u, GeographicalArea_ellipsoidArc_tag_ }; // No XER for GeographicalArea_ellipsoidArc const int GeographicalArea_ellipsoidArc_oer_ext_arr_[0] = {}; const int GeographicalArea_ellipsoidArc_oer_p_[7] = {0, 1, 2, 3, 4, 5, 6}; const TTCN_OERdescriptor_t GeographicalArea_ellipsoidArc_oer_ = { -1, TRUE, -1, TRUE, 7, 0, GeographicalArea_ellipsoidArc_oer_ext_arr_, 7, GeographicalArea_ellipsoidArc_oer_p_}; const TTCN_Typedescriptor_t GeographicalArea_ellipsoidArc_descr_ = { "@RANAP-IEs.GeographicalArea.ellipsoidArc", &GeographicalArea_ellipsoidArc_ber_, NULL, NULL, NULL, &GA__EllipsoidArc_json_, &GeographicalArea_ellipsoidArc_oer_, &GA__EllipsoidArc_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GeographicalArea_ellipsoidArc_default_coding(""); UNIVERSAL_CHARSTRING GeographicalArea_default_coding(""); const ASN_Tag_t AreaIdentity_geographicalArea_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t AreaIdentity_geographicalArea_ber_ = { 1u, AreaIdentity_geographicalArea_tag_ }; // No XER for AreaIdentity_geographicalArea const int AreaIdentity_geographicalArea_oer_ext_arr_[0] = {}; const int AreaIdentity_geographicalArea_oer_p_[0] = {}; const TTCN_OERdescriptor_t AreaIdentity_geographicalArea_oer_ = { -1, TRUE, -1, TRUE, 3, 0, AreaIdentity_geographicalArea_oer_ext_arr_, 0, AreaIdentity_geographicalArea_oer_p_}; const TTCN_Typedescriptor_t AreaIdentity_geographicalArea_descr_ = { "@RANAP-IEs.AreaIdentity.geographicalArea", &AreaIdentity_geographicalArea_ber_, NULL, NULL, NULL, &GeographicalArea_json_, &AreaIdentity_geographicalArea_oer_, &GeographicalArea_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AreaIdentity_geographicalArea_default_coding(""); UNIVERSAL_CHARSTRING AreaIdentity_default_coding(""); // No XER for Ass__RAB__Parameters const TTCN_JSONdescriptor_t Ass__RAB__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Ass__RAB__Parameters_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Ass__RAB__Parameters_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Ass__RAB__Parameters_oer_ext_arr_, 3, Ass__RAB__Parameters_oer_p_}; static const Per_Constraint Ass__RAB__Parameters_per_cons_; const ASN_PERdescriptor_t Ass__RAB__Parameters_per_ = { &Ass__RAB__Parameters_per_cons_ }; const TTCN_Typedescriptor_t Ass__RAB__Parameters_descr_ = { "@RANAP-IEs.Ass-RAB-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &Ass__RAB__Parameters_json_, &Ass__RAB__Parameters_oer_, &Ass__RAB__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__MaxBitrateList const TTCN_JSONdescriptor_t Ass__RAB__Parameter__MaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Ass__RAB__Parameter__MaxBitrateList_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__MaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__MaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameter__MaxBitrateList_oer_ext_arr_, 0, Ass__RAB__Parameter__MaxBitrateList_oer_p_}; static Per_Integer_Constraint Ass__RAB__Parameter__MaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Ass__RAB__Parameter__MaxBitrateList_per_ = { &Ass__RAB__Parameter__MaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Ass__RAB__Parameter__MaxBitrateList_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-MaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__MaxBitrateList_json_, &Ass__RAB__Parameter__MaxBitrateList_oer_, &Ass__RAB__Parameter__MaxBitrateList_per_, &Ass__RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__MaxBitrateList_0 const int Ass__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__MaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__MaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Ass__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_, 0, Ass__RAB__Parameter__MaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameter__MaxBitrateList_0_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-MaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Ass__RAB__Parameter__MaxBitrateList_0_oer_, &MaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameter__MaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Ass__RAB__Parameter__MaxBitrateList_default_coding(""); const ASN_Tag_t Ass__RAB__Parameters_assMaxBitrateInf_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Ass__RAB__Parameters_assMaxBitrateInf_ber_ = { 1u, Ass__RAB__Parameters_assMaxBitrateInf_tag_ }; // No XER for Ass__RAB__Parameters_assMaxBitrateInf const int Ass__RAB__Parameters_assMaxBitrateInf_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameters_assMaxBitrateInf_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameters_assMaxBitrateInf_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameters_assMaxBitrateInf_oer_ext_arr_, 0, Ass__RAB__Parameters_assMaxBitrateInf_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameters_assMaxBitrateInf_descr_ = { "@RANAP-IEs.Ass-RAB-Parameters.assMaxBitrateInf", &Ass__RAB__Parameters_assMaxBitrateInf_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__MaxBitrateList_json_, &Ass__RAB__Parameters_assMaxBitrateInf_oer_, &Ass__RAB__Parameter__MaxBitrateList_per_, &Ass__RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameters_assMaxBitrateInf_default_coding(""); // No XER for Ass__RAB__Parameter__GuaranteedBitrateList const TTCN_JSONdescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Ass__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__GuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_, 0, Ass__RAB__Parameter__GuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Ass__RAB__Parameter__GuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_per_ = { &Ass__RAB__Parameter__GuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-GuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__GuaranteedBitrateList_json_, &Ass__RAB__Parameter__GuaranteedBitrateList_oer_, &Ass__RAB__Parameter__GuaranteedBitrateList_per_, &Ass__RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__GuaranteedBitrateList_0 const int Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_, 0, Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameter__GuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-GuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Ass__RAB__Parameter__GuaranteedBitrateList_0_oer_, &GuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameter__GuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Ass__RAB__Parameter__GuaranteedBitrateList_default_coding(""); const ASN_Tag_t Ass__RAB__Parameters_assGuaranteedBitRateInf_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Ass__RAB__Parameters_assGuaranteedBitRateInf_ber_ = { 1u, Ass__RAB__Parameters_assGuaranteedBitRateInf_tag_ }; // No XER for Ass__RAB__Parameters_assGuaranteedBitRateInf const int Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_ext_arr_, 0, Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameters_assGuaranteedBitRateInf_descr_ = { "@RANAP-IEs.Ass-RAB-Parameters.assGuaranteedBitRateInf", &Ass__RAB__Parameters_assGuaranteedBitRateInf_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__GuaranteedBitrateList_json_, &Ass__RAB__Parameters_assGuaranteedBitRateInf_oer_, &Ass__RAB__Parameter__GuaranteedBitrateList_per_, &Ass__RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameters_assGuaranteedBitRateInf_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst28", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst28.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst28.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst28.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__ExtendedGuaranteedBitrateList const TTCN_JSONdescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_, 0, Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_per_ = { &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-ExtendedGuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_json_, &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_, &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_per_, &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0 const int Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_, 0, Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-ExtendedGuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_, &ExtendedGuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Ass__RAB__Parameter__ExtendedGuaranteedBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_Ass__RAB__Parameters__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& Ass__RAB__Parameters__ExtIEs_1_criticality = const_Ass__RAB__Parameters__ExtIEs_1_criticality; INTEGER const_Ass__RAB__Parameters__ExtIEs_1_id; const INTEGER& Ass__RAB__Parameters__ExtIEs_1_id = const_Ass__RAB__Parameters__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_Ass__RAB__Parameters__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& Ass__RAB__Parameters__ExtIEs_1_presence = const_Ass__RAB__Parameters__ExtIEs_1_presence; // No XER for Ass__RAB__Parameter__ExtendedMaxBitrateList const TTCN_JSONdescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_, 0, Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_p_}; static Per_Integer_Constraint Ass__RAB__Parameter__ExtendedMaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_per_ = { &Ass__RAB__Parameter__ExtendedMaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-ExtendedMaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Ass__RAB__Parameter__ExtendedMaxBitrateList_json_, &Ass__RAB__Parameter__ExtendedMaxBitrateList_oer_, &Ass__RAB__Parameter__ExtendedMaxBitrateList_per_, &Ass__RAB__Parameter__ExtendedMaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Ass__RAB__Parameter__ExtendedMaxBitrateList_0 const int Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_, 0, Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameter__ExtendedMaxBitrateList_0_descr_ = { "@RANAP-IEs.Ass-RAB-Parameter-ExtendedMaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Ass__RAB__Parameter__ExtendedMaxBitrateList_0_oer_, &ExtendedMaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameter__ExtendedMaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Ass__RAB__Parameter__ExtendedMaxBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_Ass__RAB__Parameters__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& Ass__RAB__Parameters__ExtIEs_2_criticality = const_Ass__RAB__Parameters__ExtIEs_2_criticality; INTEGER const_Ass__RAB__Parameters__ExtIEs_2_id; const INTEGER& Ass__RAB__Parameters__ExtIEs_2_id = const_Ass__RAB__Parameters__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_Ass__RAB__Parameters__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& Ass__RAB__Parameters__ExtIEs_2_presence = const_Ass__RAB__Parameters__ExtIEs_2_presence; RANAP__CommonDataTypes::Criticality const_Ass__RAB__Parameters__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& Ass__RAB__Parameters__ExtIEs_3_criticality = const_Ass__RAB__Parameters__ExtIEs_3_criticality; INTEGER const_Ass__RAB__Parameters__ExtIEs_3_id; const INTEGER& Ass__RAB__Parameters__ExtIEs_3_id = const_Ass__RAB__Parameters__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_Ass__RAB__Parameters__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& Ass__RAB__Parameters__ExtIEs_3_presence = const_Ass__RAB__Parameters__ExtIEs_3_presence; RANAP__CommonDataTypes::Criticality const_Ass__RAB__Parameters__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& Ass__RAB__Parameters__ExtIEs_4_criticality = const_Ass__RAB__Parameters__ExtIEs_4_criticality; INTEGER const_Ass__RAB__Parameters__ExtIEs_4_id; const INTEGER& Ass__RAB__Parameters__ExtIEs_4_id = const_Ass__RAB__Parameters__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_Ass__RAB__Parameters__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& Ass__RAB__Parameters__ExtIEs_4_presence = const_Ass__RAB__Parameters__ExtIEs_4_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst28.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst28", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst28.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst28_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_default_coding(""); const ASN_Tag_t Ass__RAB__Parameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Ass__RAB__Parameters_iE__Extensions_ber_ = { 1u, Ass__RAB__Parameters_iE__Extensions_tag_ }; // No XER for Ass__RAB__Parameters_iE__Extensions const int Ass__RAB__Parameters_iE__Extensions_oer_ext_arr_[0] = {}; const int Ass__RAB__Parameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Ass__RAB__Parameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Ass__RAB__Parameters_iE__Extensions_oer_ext_arr_, 0, Ass__RAB__Parameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Ass__RAB__Parameters_iE__Extensions_descr_ = { "@RANAP-IEs.Ass-RAB-Parameters.iE-Extensions", &Ass__RAB__Parameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_json_, &Ass__RAB__Parameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst28_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Ass__RAB__Parameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Ass__RAB__Parameters_default_coding(""); // No XER for AuthorisedPLMNs const TTCN_JSONdescriptor_t AuthorisedPLMNs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AuthorisedPLMNs_oer_ext_arr_[0] = {}; const int AuthorisedPLMNs_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedPLMNs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthorisedPLMNs_oer_ext_arr_, 0, AuthorisedPLMNs_oer_p_}; static Per_Integer_Constraint AuthorisedPLMNs_per_cons_(new INTEGER(1), new INTEGER(32), FALSE); const ASN_PERdescriptor_t AuthorisedPLMNs_per_ = { &AuthorisedPLMNs_per_cons_ }; const TTCN_Typedescriptor_t AuthorisedPLMNs_descr_ = { "@RANAP-IEs.AuthorisedPLMNs", &SEQUENCE_ber_, NULL, NULL, NULL, &AuthorisedPLMNs_json_, &AuthorisedPLMNs_oer_, &AuthorisedPLMNs_per_, &AuthorisedPLMNs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t AuthorisedPLMNs_0_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t AuthorisedPLMNs_0_pLMNidentity_ber_ = { 1u, AuthorisedPLMNs_0_pLMNidentity_tag_ }; // No XER for AuthorisedPLMNs_0_pLMNidentity const int AuthorisedPLMNs_0_pLMNidentity_oer_ext_arr_[0] = {}; const int AuthorisedPLMNs_0_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedPLMNs_0_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, AuthorisedPLMNs_0_pLMNidentity_oer_ext_arr_, 0, AuthorisedPLMNs_0_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t AuthorisedPLMNs_0_pLMNidentity_descr_ = { "@RANAP-IEs.AuthorisedPLMNs.SEQUENCE.pLMNidentity", &AuthorisedPLMNs_0_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &AuthorisedPLMNs_0_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthorisedPLMNs_0_pLMNidentity_default_coding(""); // No XER for AuthorisedPLMNs_0 const TTCN_JSONdescriptor_t AuthorisedPLMNs_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AuthorisedPLMNs_0_oer_ext_arr_[0] = {}; const int AuthorisedPLMNs_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t AuthorisedPLMNs_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, AuthorisedPLMNs_0_oer_ext_arr_, 3, AuthorisedPLMNs_0_oer_p_}; static const Per_Constraint AuthorisedPLMNs_0_per_cons_; const ASN_PERdescriptor_t AuthorisedPLMNs_0_per_ = { &AuthorisedPLMNs_0_per_cons_ }; const TTCN_Typedescriptor_t AuthorisedPLMNs_0_descr_ = { "@RANAP-IEs.AuthorisedPLMNs.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &AuthorisedPLMNs_0_json_, &AuthorisedPLMNs_0_oer_, &AuthorisedPLMNs_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for AuthorisedSNAs const TTCN_JSONdescriptor_t AuthorisedSNAs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int AuthorisedSNAs_oer_ext_arr_[0] = {}; const int AuthorisedSNAs_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedSNAs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthorisedSNAs_oer_ext_arr_, 0, AuthorisedSNAs_oer_p_}; static Per_Integer_Constraint AuthorisedSNAs_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t AuthorisedSNAs_per_ = { &AuthorisedSNAs_per_cons_ }; const TTCN_Typedescriptor_t AuthorisedSNAs_descr_ = { "@RANAP-IEs.AuthorisedSNAs", &SEQUENCE_ber_, NULL, NULL, NULL, &AuthorisedSNAs_json_, &AuthorisedSNAs_oer_, &AuthorisedSNAs_per_, &AuthorisedSNAs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SNAC const int SNAC_oer_ext_arr_[0] = {}; const int SNAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t SNAC_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SNAC_oer_ext_arr_, 0, SNAC_oer_p_}; static Per_Integer_Constraint SNAC_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t SNAC_per_ = { &SNAC_per_cons_ }; const TTCN_Typedescriptor_t SNAC_descr_ = { "@RANAP-IEs.SNAC", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SNAC_oer_, &SNAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SNAC_default_coding(""); // No XER for AuthorisedSNAs_0 const int AuthorisedSNAs_0_oer_ext_arr_[0] = {}; const int AuthorisedSNAs_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedSNAs_0_oer_ = { 2, FALSE, -1, FALSE, 0, 0, AuthorisedSNAs_0_oer_ext_arr_, 0, AuthorisedSNAs_0_oer_p_}; const TTCN_Typedescriptor_t AuthorisedSNAs_0_descr_ = { "@RANAP-IEs.AuthorisedSNAs.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &AuthorisedSNAs_0_oer_, &SNAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthorisedSNAs_0_default_coding(""); UNIVERSAL_CHARSTRING AuthorisedSNAs_default_coding(""); const ASN_Tag_t AuthorisedPLMNs_0_authorisedSNAsList_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t AuthorisedPLMNs_0_authorisedSNAsList_ber_ = { 1u, AuthorisedPLMNs_0_authorisedSNAsList_tag_ }; // No XER for AuthorisedPLMNs_0_authorisedSNAsList const int AuthorisedPLMNs_0_authorisedSNAsList_oer_ext_arr_[0] = {}; const int AuthorisedPLMNs_0_authorisedSNAsList_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedPLMNs_0_authorisedSNAsList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthorisedPLMNs_0_authorisedSNAsList_oer_ext_arr_, 0, AuthorisedPLMNs_0_authorisedSNAsList_oer_p_}; const TTCN_Typedescriptor_t AuthorisedPLMNs_0_authorisedSNAsList_descr_ = { "@RANAP-IEs.AuthorisedPLMNs.SEQUENCE.authorisedSNAsList", &AuthorisedPLMNs_0_authorisedSNAsList_ber_, NULL, NULL, NULL, &AuthorisedSNAs_json_, &AuthorisedPLMNs_0_authorisedSNAsList_oer_, &AuthorisedSNAs_per_, &AuthorisedSNAs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthorisedPLMNs_0_authorisedSNAsList_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst29", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst29.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst29.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst29.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst29.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst29", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst29.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst29_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_default_coding(""); const ASN_Tag_t AuthorisedPLMNs_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t AuthorisedPLMNs_0_iE__Extensions_ber_ = { 1u, AuthorisedPLMNs_0_iE__Extensions_tag_ }; // No XER for AuthorisedPLMNs_0_iE__Extensions const int AuthorisedPLMNs_0_iE__Extensions_oer_ext_arr_[0] = {}; const int AuthorisedPLMNs_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t AuthorisedPLMNs_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, AuthorisedPLMNs_0_iE__Extensions_oer_ext_arr_, 0, AuthorisedPLMNs_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t AuthorisedPLMNs_0_iE__Extensions_descr_ = { "@RANAP-IEs.AuthorisedPLMNs.SEQUENCE.iE-Extensions", &AuthorisedPLMNs_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_json_, &AuthorisedPLMNs_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst29_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING AuthorisedPLMNs_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING AuthorisedPLMNs_0_default_coding(""); UNIVERSAL_CHARSTRING AuthorisedPLMNs_default_coding(""); // No XER for BarometricPressure const int BarometricPressure_oer_ext_arr_[0] = {}; const int BarometricPressure_oer_p_[0] = {}; const TTCN_OERdescriptor_t BarometricPressure_oer_ = { 4, FALSE, -1, FALSE, 0, 0, BarometricPressure_oer_ext_arr_, 0, BarometricPressure_oer_p_}; static Per_Integer_Constraint BarometricPressure_per_cons_(new INTEGER(30000), new INTEGER(115000), FALSE); const ASN_PERdescriptor_t BarometricPressure_per_ = { &BarometricPressure_per_cons_ }; const TTCN_Typedescriptor_t BarometricPressure_descr_ = { "@RANAP-IEs.BarometricPressure", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &BarometricPressure_oer_, &BarometricPressure_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BarometricPressure_default_coding(""); // No XER for BindingID const int BindingID_oer_ext_arr_[0] = {}; const int BindingID_oer_p_[0] = {}; const TTCN_OERdescriptor_t BindingID_oer_ = { -1, TRUE, 4, FALSE, 0, 0, BindingID_oer_ext_arr_, 0, BindingID_oer_p_}; static Per_Integer_Constraint BindingID_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); const ASN_PERdescriptor_t BindingID_per_ = { &BindingID_per_cons_ }; const TTCN_Typedescriptor_t BindingID_descr_ = { "@RANAP-IEs.BindingID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &BindingID_oer_, &BindingID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BindingID_default_coding(""); const ASN_Tag_t BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_ber_ = { 1u, BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_tag_ }; // No XER for BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag const int BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_ext_arr_[0] = {}; const int BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_p_[0] = {}; const TTCN_OERdescriptor_t BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_ext_arr_, 0, BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_p_}; static Per_Integer_Constraint BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); static Per_BitString_Constraint BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_per_cons_(FALSE, &BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_size_per_cons_); const ASN_PERdescriptor_t BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_per_ = { &BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_per_cons_ }; const TTCN_Typedescriptor_t BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_descr_ = { "@RANAP-IEs.BroadcastAssistanceDataDecipheringKeys.cipheringKeyFlag", &BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_ber_, NULL, NULL, NULL, &BITSTRING_json_, &BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_oer_, &BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BroadcastAssistanceDataDecipheringKeys_cipheringKeyFlag_default_coding(""); const ASN_Tag_t BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_ber_ = { 1u, BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_tag_ }; // No XER for BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey const int BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_ext_arr_[0] = {}; const int BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_ = { -1, TRUE, 56, FALSE, 0, 0, BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_ext_arr_, 0, BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_p_}; static Per_Integer_Constraint BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(56), FALSE); static Per_BitString_Constraint BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_per_cons_(FALSE, &BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_size_per_cons_); const ASN_PERdescriptor_t BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_per_ = { &BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_per_cons_ }; const TTCN_Typedescriptor_t BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_descr_ = { "@RANAP-IEs.BroadcastAssistanceDataDecipheringKeys.currentDecipheringKey", &BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_ber_, NULL, NULL, NULL, &BITSTRING_json_, &BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_oer_, &BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BroadcastAssistanceDataDecipheringKeys_currentDecipheringKey_default_coding(""); const ASN_Tag_t BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_ber_ = { 1u, BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_tag_ }; // No XER for BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey const int BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_ext_arr_[0] = {}; const int BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_ = { -1, TRUE, 56, FALSE, 0, 0, BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_ext_arr_, 0, BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_p_}; static Per_Integer_Constraint BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(56), FALSE); static Per_BitString_Constraint BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_per_cons_(FALSE, &BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_size_per_cons_); const ASN_PERdescriptor_t BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_per_ = { &BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_per_cons_ }; const TTCN_Typedescriptor_t BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_descr_ = { "@RANAP-IEs.BroadcastAssistanceDataDecipheringKeys.nextDecipheringKey", &BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_ber_, NULL, NULL, NULL, &BITSTRING_json_, &BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_oer_, &BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BroadcastAssistanceDataDecipheringKeys_nextDecipheringKey_default_coding(""); // No XER for BroadcastAssistanceDataDecipheringKeys const TTCN_JSONdescriptor_t BroadcastAssistanceDataDecipheringKeys_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int BroadcastAssistanceDataDecipheringKeys_oer_ext_arr_[0] = {}; const int BroadcastAssistanceDataDecipheringKeys_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t BroadcastAssistanceDataDecipheringKeys_oer_ = { -1, TRUE, -1, TRUE, 3, 0, BroadcastAssistanceDataDecipheringKeys_oer_ext_arr_, 3, BroadcastAssistanceDataDecipheringKeys_oer_p_}; static const Per_Constraint BroadcastAssistanceDataDecipheringKeys_per_cons_; const ASN_PERdescriptor_t BroadcastAssistanceDataDecipheringKeys_per_ = { &BroadcastAssistanceDataDecipheringKeys_per_cons_ }; const TTCN_Typedescriptor_t BroadcastAssistanceDataDecipheringKeys_descr_ = { "@RANAP-IEs.BroadcastAssistanceDataDecipheringKeys", &SEQUENCE_ber_, NULL, NULL, NULL, &BroadcastAssistanceDataDecipheringKeys_json_, &BroadcastAssistanceDataDecipheringKeys_oer_, &BroadcastAssistanceDataDecipheringKeys_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING BroadcastAssistanceDataDecipheringKeys_default_coding(""); // No XER for Cause const TTCN_JSONdescriptor_t Cause_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Cause_oer_ext_arr_[0] = {}; const int Cause_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_oer_ = { -1, TRUE, -1, TRUE, 6, 0, Cause_oer_ext_arr_, 0, Cause_oer_p_}; static const Per_Constraint Cause_per_cons_; const ASN_PERdescriptor_t Cause_per_ = { &Cause_per_cons_ }; const TTCN_Typedescriptor_t Cause_descr_ = { "@RANAP-IEs.Cause", &CHOICE_ber_, NULL, NULL, NULL, &Cause_json_, &Cause_oer_, &Cause_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for CauseRadioNetwork const int CauseRadioNetwork_oer_ext_arr_[0] = {}; const int CauseRadioNetwork_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseRadioNetwork_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CauseRadioNetwork_oer_ext_arr_, 0, CauseRadioNetwork_oer_p_}; static Per_Integer_Constraint CauseRadioNetwork_per_cons_(new INTEGER(1), new INTEGER(64), FALSE); const ASN_PERdescriptor_t CauseRadioNetwork_per_ = { &CauseRadioNetwork_per_cons_ }; const TTCN_Typedescriptor_t CauseRadioNetwork_descr_ = { "@RANAP-IEs.CauseRadioNetwork", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseRadioNetwork_oer_, &CauseRadioNetwork_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseRadioNetwork_default_coding(""); const ASN_Tag_t Cause_radioNetwork_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Cause_radioNetwork_ber_ = { 1u, Cause_radioNetwork_tag_ }; // No XER for Cause_radioNetwork const int Cause_radioNetwork_oer_ext_arr_[0] = {}; const int Cause_radioNetwork_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_radioNetwork_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cause_radioNetwork_oer_ext_arr_, 0, Cause_radioNetwork_oer_p_}; const TTCN_Typedescriptor_t Cause_radioNetwork_descr_ = { "@RANAP-IEs.Cause.radioNetwork", &Cause_radioNetwork_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_radioNetwork_oer_, &CauseRadioNetwork_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_radioNetwork_default_coding(""); // No XER for CauseTransmissionNetwork const int CauseTransmissionNetwork_oer_ext_arr_[0] = {}; const int CauseTransmissionNetwork_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseTransmissionNetwork_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CauseTransmissionNetwork_oer_ext_arr_, 0, CauseTransmissionNetwork_oer_p_}; static Per_Integer_Constraint CauseTransmissionNetwork_per_cons_(new INTEGER(65), new INTEGER(80), FALSE); const ASN_PERdescriptor_t CauseTransmissionNetwork_per_ = { &CauseTransmissionNetwork_per_cons_ }; const TTCN_Typedescriptor_t CauseTransmissionNetwork_descr_ = { "@RANAP-IEs.CauseTransmissionNetwork", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseTransmissionNetwork_oer_, &CauseTransmissionNetwork_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseTransmissionNetwork_default_coding(""); const ASN_Tag_t Cause_transmissionNetwork_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Cause_transmissionNetwork_ber_ = { 1u, Cause_transmissionNetwork_tag_ }; // No XER for Cause_transmissionNetwork const int Cause_transmissionNetwork_oer_ext_arr_[0] = {}; const int Cause_transmissionNetwork_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_transmissionNetwork_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cause_transmissionNetwork_oer_ext_arr_, 0, Cause_transmissionNetwork_oer_p_}; const TTCN_Typedescriptor_t Cause_transmissionNetwork_descr_ = { "@RANAP-IEs.Cause.transmissionNetwork", &Cause_transmissionNetwork_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_transmissionNetwork_oer_, &CauseTransmissionNetwork_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_transmissionNetwork_default_coding(""); // No XER for CauseNAS const int CauseNAS_oer_ext_arr_[0] = {}; const int CauseNAS_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseNAS_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CauseNAS_oer_ext_arr_, 0, CauseNAS_oer_p_}; static Per_Integer_Constraint CauseNAS_per_cons_(new INTEGER(81), new INTEGER(96), FALSE); const ASN_PERdescriptor_t CauseNAS_per_ = { &CauseNAS_per_cons_ }; const TTCN_Typedescriptor_t CauseNAS_descr_ = { "@RANAP-IEs.CauseNAS", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseNAS_oer_, &CauseNAS_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseNAS_default_coding(""); const ASN_Tag_t Cause_nAS_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Cause_nAS_ber_ = { 1u, Cause_nAS_tag_ }; // No XER for Cause_nAS const int Cause_nAS_oer_ext_arr_[0] = {}; const int Cause_nAS_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_nAS_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cause_nAS_oer_ext_arr_, 0, Cause_nAS_oer_p_}; const TTCN_Typedescriptor_t Cause_nAS_descr_ = { "@RANAP-IEs.Cause.nAS", &Cause_nAS_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_nAS_oer_, &CauseNAS_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_nAS_default_coding(""); // No XER for CauseProtocol const int CauseProtocol_oer_ext_arr_[0] = {}; const int CauseProtocol_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseProtocol_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CauseProtocol_oer_ext_arr_, 0, CauseProtocol_oer_p_}; static Per_Integer_Constraint CauseProtocol_per_cons_(new INTEGER(97), new INTEGER(112), FALSE); const ASN_PERdescriptor_t CauseProtocol_per_ = { &CauseProtocol_per_cons_ }; const TTCN_Typedescriptor_t CauseProtocol_descr_ = { "@RANAP-IEs.CauseProtocol", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseProtocol_oer_, &CauseProtocol_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseProtocol_default_coding(""); const ASN_Tag_t Cause_protocol_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t Cause_protocol_ber_ = { 1u, Cause_protocol_tag_ }; // No XER for Cause_protocol const int Cause_protocol_oer_ext_arr_[0] = {}; const int Cause_protocol_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_protocol_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cause_protocol_oer_ext_arr_, 0, Cause_protocol_oer_p_}; const TTCN_Typedescriptor_t Cause_protocol_descr_ = { "@RANAP-IEs.Cause.protocol", &Cause_protocol_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_protocol_oer_, &CauseProtocol_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_protocol_default_coding(""); // No XER for CauseMisc const int CauseMisc_oer_ext_arr_[0] = {}; const int CauseMisc_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseMisc_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CauseMisc_oer_ext_arr_, 0, CauseMisc_oer_p_}; static Per_Integer_Constraint CauseMisc_per_cons_(new INTEGER(113), new INTEGER(128), FALSE); const ASN_PERdescriptor_t CauseMisc_per_ = { &CauseMisc_per_cons_ }; const TTCN_Typedescriptor_t CauseMisc_descr_ = { "@RANAP-IEs.CauseMisc", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseMisc_oer_, &CauseMisc_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseMisc_default_coding(""); const ASN_Tag_t Cause_misc_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t Cause_misc_ber_ = { 1u, Cause_misc_tag_ }; // No XER for Cause_misc const int Cause_misc_oer_ext_arr_[0] = {}; const int Cause_misc_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_misc_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cause_misc_oer_ext_arr_, 0, Cause_misc_oer_p_}; const TTCN_Typedescriptor_t Cause_misc_descr_ = { "@RANAP-IEs.Cause.misc", &Cause_misc_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_misc_oer_, &CauseMisc_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_misc_default_coding(""); // No XER for CauseNon__Standard const int CauseNon__Standard_oer_ext_arr_[0] = {}; const int CauseNon__Standard_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseNon__Standard_oer_ = { 2, FALSE, -1, FALSE, 0, 0, CauseNon__Standard_oer_ext_arr_, 0, CauseNon__Standard_oer_p_}; static Per_Integer_Constraint CauseNon__Standard_per_cons_(new INTEGER(129), new INTEGER(256), FALSE); const ASN_PERdescriptor_t CauseNon__Standard_per_ = { &CauseNon__Standard_per_cons_ }; const TTCN_Typedescriptor_t CauseNon__Standard_descr_ = { "@RANAP-IEs.CauseNon-Standard", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseNon__Standard_oer_, &CauseNon__Standard_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseNon__Standard_default_coding(""); const ASN_Tag_t Cause_non__Standard_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t Cause_non__Standard_ber_ = { 1u, Cause_non__Standard_tag_ }; // No XER for Cause_non__Standard const int Cause_non__Standard_oer_ext_arr_[0] = {}; const int Cause_non__Standard_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_non__Standard_oer_ = { 2, FALSE, -1, FALSE, 0, 0, Cause_non__Standard_oer_ext_arr_, 0, Cause_non__Standard_oer_p_}; const TTCN_Typedescriptor_t Cause_non__Standard_descr_ = { "@RANAP-IEs.Cause.non-Standard", &Cause_non__Standard_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_non__Standard_oer_, &CauseNon__Standard_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_non__Standard_default_coding(""); // No XER for CauseRadioNetworkExtension const int CauseRadioNetworkExtension_oer_ext_arr_[0] = {}; const int CauseRadioNetworkExtension_oer_p_[0] = {}; const TTCN_OERdescriptor_t CauseRadioNetworkExtension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, CauseRadioNetworkExtension_oer_ext_arr_, 0, CauseRadioNetworkExtension_oer_p_}; static Per_Integer_Constraint CauseRadioNetworkExtension_per_cons_(new INTEGER(257), new INTEGER(512), FALSE); const ASN_PERdescriptor_t CauseRadioNetworkExtension_per_ = { &CauseRadioNetworkExtension_per_cons_ }; const TTCN_Typedescriptor_t CauseRadioNetworkExtension_descr_ = { "@RANAP-IEs.CauseRadioNetworkExtension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CauseRadioNetworkExtension_oer_, &CauseRadioNetworkExtension_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CauseRadioNetworkExtension_default_coding(""); const ASN_Tag_t Cause_radioNetworkExtension_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t Cause_radioNetworkExtension_ber_ = { 1u, Cause_radioNetworkExtension_tag_ }; // No XER for Cause_radioNetworkExtension const int Cause_radioNetworkExtension_oer_ext_arr_[0] = {}; const int Cause_radioNetworkExtension_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cause_radioNetworkExtension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, Cause_radioNetworkExtension_oer_ext_arr_, 0, Cause_radioNetworkExtension_oer_p_}; const TTCN_Typedescriptor_t Cause_radioNetworkExtension_descr_ = { "@RANAP-IEs.Cause.radioNetworkExtension", &Cause_radioNetworkExtension_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cause_radioNetworkExtension_oer_, &CauseRadioNetworkExtension_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cause_radioNetworkExtension_default_coding(""); UNIVERSAL_CHARSTRING Cause_default_coding(""); // No XER for Cell__Access__Mode const TTCN_JSONdescriptor_t Cell__Access__Mode_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Cell__Access__Mode_oer_ext_arr_[0] = {}; const int Cell__Access__Mode_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Access__Mode_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Cell__Access__Mode_oer_ext_arr_, 0, Cell__Access__Mode_oer_p_}; static const Per_Constraint Cell__Access__Mode_per_cons_; const ASN_PERdescriptor_t Cell__Access__Mode_per_ = { &Cell__Access__Mode_per_cons_ }; const TTCN_Typedescriptor_t Cell__Access__Mode_descr_ = { "@RANAP-IEs.Cell-Access-Mode", &ENUMERATED_ber_, NULL, NULL, NULL, &Cell__Access__Mode_json_, &Cell__Access__Mode_oer_, &Cell__Access__Mode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Access__Mode_default_coding(""); // No XER for Cell__Capacity__Class__Value const int Cell__Capacity__Class__Value_oer_ext_arr_[0] = {}; const int Cell__Capacity__Class__Value_oer_p_[0] = {}; const TTCN_OERdescriptor_t Cell__Capacity__Class__Value_oer_ = { 1, FALSE, -1, FALSE, 0, 0, Cell__Capacity__Class__Value_oer_ext_arr_, 0, Cell__Capacity__Class__Value_oer_p_}; static Per_Integer_Constraint Cell__Capacity__Class__Value_per_cons_(new INTEGER(1), new INTEGER(100), TRUE); const ASN_PERdescriptor_t Cell__Capacity__Class__Value_per_ = { &Cell__Capacity__Class__Value_per_cons_ }; const TTCN_Typedescriptor_t Cell__Capacity__Class__Value_descr_ = { "@RANAP-IEs.Cell-Capacity-Class-Value", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Cell__Capacity__Class__Value_oer_, &Cell__Capacity__Class__Value_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Cell__Capacity__Class__Value_default_coding(""); const ASN_Tag_t CellLoadInformation_cell__Capacity__Class__Value_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CellLoadInformation_cell__Capacity__Class__Value_ber_ = { 1u, CellLoadInformation_cell__Capacity__Class__Value_tag_ }; // No XER for CellLoadInformation_cell__Capacity__Class__Value const int CellLoadInformation_cell__Capacity__Class__Value_oer_ext_arr_[0] = {}; const int CellLoadInformation_cell__Capacity__Class__Value_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformation_cell__Capacity__Class__Value_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CellLoadInformation_cell__Capacity__Class__Value_oer_ext_arr_, 0, CellLoadInformation_cell__Capacity__Class__Value_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformation_cell__Capacity__Class__Value_descr_ = { "@RANAP-IEs.CellLoadInformation.cell-Capacity-Class-Value", &CellLoadInformation_cell__Capacity__Class__Value_ber_, NULL, NULL, NULL, &INTEGER_json_, &CellLoadInformation_cell__Capacity__Class__Value_oer_, &Cell__Capacity__Class__Value_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformation_cell__Capacity__Class__Value_default_coding(""); // No XER for LoadValue const int LoadValue_oer_ext_arr_[0] = {}; const int LoadValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoadValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, LoadValue_oer_ext_arr_, 0, LoadValue_oer_p_}; static Per_Integer_Constraint LoadValue_per_cons_(new INTEGER(0), new INTEGER(100), FALSE); const ASN_PERdescriptor_t LoadValue_per_ = { &LoadValue_per_cons_ }; const TTCN_Typedescriptor_t LoadValue_descr_ = { "@RANAP-IEs.LoadValue", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &LoadValue_oer_, &LoadValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoadValue_default_coding(""); const ASN_Tag_t CellLoadInformation_loadValue_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CellLoadInformation_loadValue_ber_ = { 1u, CellLoadInformation_loadValue_tag_ }; // No XER for CellLoadInformation_loadValue const int CellLoadInformation_loadValue_oer_ext_arr_[0] = {}; const int CellLoadInformation_loadValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformation_loadValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CellLoadInformation_loadValue_oer_ext_arr_, 0, CellLoadInformation_loadValue_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformation_loadValue_descr_ = { "@RANAP-IEs.CellLoadInformation.loadValue", &CellLoadInformation_loadValue_ber_, NULL, NULL, NULL, &INTEGER_json_, &CellLoadInformation_loadValue_oer_, &LoadValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformation_loadValue_default_coding(""); // No XER for CellLoadInformation const TTCN_JSONdescriptor_t CellLoadInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CellLoadInformation_oer_ext_arr_[0] = {}; const int CellLoadInformation_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t CellLoadInformation_oer_ = { -1, TRUE, -1, TRUE, 5, 0, CellLoadInformation_oer_ext_arr_, 5, CellLoadInformation_oer_p_}; static const Per_Constraint CellLoadInformation_per_cons_; const ASN_PERdescriptor_t CellLoadInformation_per_ = { &CellLoadInformation_per_cons_ }; const TTCN_Typedescriptor_t CellLoadInformation_descr_ = { "@RANAP-IEs.CellLoadInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &CellLoadInformation_json_, &CellLoadInformation_oer_, &CellLoadInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RTLoadValue const int RTLoadValue_oer_ext_arr_[0] = {}; const int RTLoadValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t RTLoadValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, RTLoadValue_oer_ext_arr_, 0, RTLoadValue_oer_p_}; static Per_Integer_Constraint RTLoadValue_per_cons_(new INTEGER(0), new INTEGER(100), FALSE); const ASN_PERdescriptor_t RTLoadValue_per_ = { &RTLoadValue_per_cons_ }; const TTCN_Typedescriptor_t RTLoadValue_descr_ = { "@RANAP-IEs.RTLoadValue", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RTLoadValue_oer_, &RTLoadValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RTLoadValue_default_coding(""); const ASN_Tag_t CellLoadInformation_rTLoadValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t CellLoadInformation_rTLoadValue_ber_ = { 1u, CellLoadInformation_rTLoadValue_tag_ }; // No XER for CellLoadInformation_rTLoadValue const int CellLoadInformation_rTLoadValue_oer_ext_arr_[0] = {}; const int CellLoadInformation_rTLoadValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformation_rTLoadValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CellLoadInformation_rTLoadValue_oer_ext_arr_, 0, CellLoadInformation_rTLoadValue_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformation_rTLoadValue_descr_ = { "@RANAP-IEs.CellLoadInformation.rTLoadValue", &CellLoadInformation_rTLoadValue_ber_, NULL, NULL, NULL, &INTEGER_json_, &CellLoadInformation_rTLoadValue_oer_, &RTLoadValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformation_rTLoadValue_default_coding(""); // No XER for NRTLoadInformationValue const int NRTLoadInformationValue_oer_ext_arr_[0] = {}; const int NRTLoadInformationValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t NRTLoadInformationValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, NRTLoadInformationValue_oer_ext_arr_, 0, NRTLoadInformationValue_oer_p_}; static Per_Integer_Constraint NRTLoadInformationValue_per_cons_(new INTEGER(0), new INTEGER(3), FALSE); const ASN_PERdescriptor_t NRTLoadInformationValue_per_ = { &NRTLoadInformationValue_per_cons_ }; const TTCN_Typedescriptor_t NRTLoadInformationValue_descr_ = { "@RANAP-IEs.NRTLoadInformationValue", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &NRTLoadInformationValue_oer_, &NRTLoadInformationValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NRTLoadInformationValue_default_coding(""); const ASN_Tag_t CellLoadInformation_nRTLoadInformationValue_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t CellLoadInformation_nRTLoadInformationValue_ber_ = { 1u, CellLoadInformation_nRTLoadInformationValue_tag_ }; // No XER for CellLoadInformation_nRTLoadInformationValue const int CellLoadInformation_nRTLoadInformationValue_oer_ext_arr_[0] = {}; const int CellLoadInformation_nRTLoadInformationValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformation_nRTLoadInformationValue_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CellLoadInformation_nRTLoadInformationValue_oer_ext_arr_, 0, CellLoadInformation_nRTLoadInformationValue_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformation_nRTLoadInformationValue_descr_ = { "@RANAP-IEs.CellLoadInformation.nRTLoadInformationValue", &CellLoadInformation_nRTLoadInformationValue_ber_, NULL, NULL, NULL, &INTEGER_json_, &CellLoadInformation_nRTLoadInformationValue_oer_, &NRTLoadInformationValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformation_nRTLoadInformationValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst30", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst30.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst30.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst30.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst30.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst30", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst30.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst30_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_default_coding(""); const ASN_Tag_t CellLoadInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t CellLoadInformation_iE__Extensions_ber_ = { 1u, CellLoadInformation_iE__Extensions_tag_ }; // No XER for CellLoadInformation_iE__Extensions const int CellLoadInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int CellLoadInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellLoadInformation_iE__Extensions_oer_ext_arr_, 0, CellLoadInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformation_iE__Extensions_descr_ = { "@RANAP-IEs.CellLoadInformation.iE-Extensions", &CellLoadInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_json_, &CellLoadInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst30_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CellLoadInformation_default_coding(""); // No XER for SourceCellID const TTCN_JSONdescriptor_t SourceCellID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceCellID_oer_ext_arr_[0] = {}; const int SourceCellID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceCellID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, SourceCellID_oer_ext_arr_, 0, SourceCellID_oer_p_}; static const Per_Constraint SourceCellID_per_cons_; const ASN_PERdescriptor_t SourceCellID_per_ = { &SourceCellID_per_cons_ }; const TTCN_Typedescriptor_t SourceCellID_descr_ = { "@RANAP-IEs.SourceCellID", &CHOICE_ber_, NULL, NULL, NULL, &SourceCellID_json_, &SourceCellID_oer_, &SourceCellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SourceUTRANCellID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SourceUTRANCellID_pLMNidentity_ber_ = { 1u, SourceUTRANCellID_pLMNidentity_tag_ }; // No XER for SourceUTRANCellID_pLMNidentity const int SourceUTRANCellID_pLMNidentity_oer_ext_arr_[0] = {}; const int SourceUTRANCellID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceUTRANCellID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, SourceUTRANCellID_pLMNidentity_oer_ext_arr_, 0, SourceUTRANCellID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t SourceUTRANCellID_pLMNidentity_descr_ = { "@RANAP-IEs.SourceUTRANCellID.pLMNidentity", &SourceUTRANCellID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SourceUTRANCellID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceUTRANCellID_pLMNidentity_default_coding(""); // No XER for TargetCellId const int TargetCellId_oer_ext_arr_[0] = {}; const int TargetCellId_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetCellId_oer_ = { 4, FALSE, -1, FALSE, 0, 0, TargetCellId_oer_ext_arr_, 0, TargetCellId_oer_p_}; static Per_Integer_Constraint TargetCellId_per_cons_(new INTEGER(0), new INTEGER(268435455), FALSE); const ASN_PERdescriptor_t TargetCellId_per_ = { &TargetCellId_per_cons_ }; const TTCN_Typedescriptor_t TargetCellId_descr_ = { "@RANAP-IEs.TargetCellId", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TargetCellId_oer_, &TargetCellId_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetCellId_default_coding(""); const ASN_Tag_t SourceUTRANCellID_uTRANcellID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SourceUTRANCellID_uTRANcellID_ber_ = { 1u, SourceUTRANCellID_uTRANcellID_tag_ }; // No XER for SourceUTRANCellID_uTRANcellID const int SourceUTRANCellID_uTRANcellID_oer_ext_arr_[0] = {}; const int SourceUTRANCellID_uTRANcellID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceUTRANCellID_uTRANcellID_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SourceUTRANCellID_uTRANcellID_oer_ext_arr_, 0, SourceUTRANCellID_uTRANcellID_oer_p_}; const TTCN_Typedescriptor_t SourceUTRANCellID_uTRANcellID_descr_ = { "@RANAP-IEs.SourceUTRANCellID.uTRANcellID", &SourceUTRANCellID_uTRANcellID_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceUTRANCellID_uTRANcellID_oer_, &TargetCellId_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceUTRANCellID_uTRANcellID_default_coding(""); // No XER for SourceUTRANCellID const TTCN_JSONdescriptor_t SourceUTRANCellID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceUTRANCellID_oer_ext_arr_[0] = {}; const int SourceUTRANCellID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SourceUTRANCellID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceUTRANCellID_oer_ext_arr_, 3, SourceUTRANCellID_oer_p_}; static const Per_Constraint SourceUTRANCellID_per_cons_; const ASN_PERdescriptor_t SourceUTRANCellID_per_ = { &SourceUTRANCellID_per_cons_ }; const TTCN_Typedescriptor_t SourceUTRANCellID_descr_ = { "@RANAP-IEs.SourceUTRANCellID", &SEQUENCE_ber_, NULL, NULL, NULL, &SourceUTRANCellID_json_, &SourceUTRANCellID_oer_, &SourceUTRANCellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst31", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst31.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst31.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst31.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst31.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst31", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst31.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst31_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_default_coding(""); const ASN_Tag_t SourceUTRANCellID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SourceUTRANCellID_iE__Extensions_ber_ = { 1u, SourceUTRANCellID_iE__Extensions_tag_ }; // No XER for SourceUTRANCellID_iE__Extensions const int SourceUTRANCellID_iE__Extensions_oer_ext_arr_[0] = {}; const int SourceUTRANCellID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceUTRANCellID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceUTRANCellID_iE__Extensions_oer_ext_arr_, 0, SourceUTRANCellID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SourceUTRANCellID_iE__Extensions_descr_ = { "@RANAP-IEs.SourceUTRANCellID.iE-Extensions", &SourceUTRANCellID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_json_, &SourceUTRANCellID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst31_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceUTRANCellID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SourceUTRANCellID_default_coding(""); const ASN_Tag_t SourceCellID_sourceUTRANCellID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SourceCellID_sourceUTRANCellID_ber_ = { 1u, SourceCellID_sourceUTRANCellID_tag_ }; // No XER for SourceCellID_sourceUTRANCellID const int SourceCellID_sourceUTRANCellID_oer_ext_arr_[0] = {}; const int SourceCellID_sourceUTRANCellID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SourceCellID_sourceUTRANCellID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceCellID_sourceUTRANCellID_oer_ext_arr_, 3, SourceCellID_sourceUTRANCellID_oer_p_}; const TTCN_Typedescriptor_t SourceCellID_sourceUTRANCellID_descr_ = { "@RANAP-IEs.SourceCellID.sourceUTRANCellID", &SourceCellID_sourceUTRANCellID_ber_, NULL, NULL, NULL, &SourceUTRANCellID_json_, &SourceCellID_sourceUTRANCellID_oer_, &SourceUTRANCellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceCellID_sourceUTRANCellID_default_coding(""); const ASN_Tag_t CGI_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CGI_pLMNidentity_ber_ = { 1u, CGI_pLMNidentity_tag_ }; // No XER for CGI_pLMNidentity const int CGI_pLMNidentity_oer_ext_arr_[0] = {}; const int CGI_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t CGI_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, CGI_pLMNidentity_oer_ext_arr_, 0, CGI_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t CGI_pLMNidentity_descr_ = { "@RANAP-IEs.CGI.pLMNidentity", &CGI_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &CGI_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CGI_pLMNidentity_default_coding(""); const ASN_Tag_t CGI_lAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CGI_lAC_ber_ = { 1u, CGI_lAC_tag_ }; // No XER for CGI_lAC const int CGI_lAC_oer_ext_arr_[0] = {}; const int CGI_lAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t CGI_lAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CGI_lAC_oer_ext_arr_, 0, CGI_lAC_oer_p_}; const TTCN_Typedescriptor_t CGI_lAC_descr_ = { "@RANAP-IEs.CGI.lAC", &CGI_lAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &CGI_lAC_oer_, &LAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CGI_lAC_default_coding(""); // No XER for CI const int CI_oer_ext_arr_[0] = {}; const int CI_oer_p_[0] = {}; const TTCN_OERdescriptor_t CI_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CI_oer_ext_arr_, 0, CI_oer_p_}; static Per_Integer_Constraint CI_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t CI_per_ = { &CI_per_cons_ }; const TTCN_Typedescriptor_t CI_descr_ = { "@RANAP-IEs.CI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &CI_oer_, &CI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CI_default_coding(""); const ASN_Tag_t CGI_cI_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t CGI_cI_ber_ = { 1u, CGI_cI_tag_ }; // No XER for CGI_cI const int CGI_cI_oer_ext_arr_[0] = {}; const int CGI_cI_oer_p_[0] = {}; const TTCN_OERdescriptor_t CGI_cI_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CGI_cI_oer_ext_arr_, 0, CGI_cI_oer_p_}; const TTCN_Typedescriptor_t CGI_cI_descr_ = { "@RANAP-IEs.CGI.cI", &CGI_cI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &CGI_cI_oer_, &CI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CGI_cI_default_coding(""); // No XER for CGI const TTCN_JSONdescriptor_t CGI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CGI_oer_ext_arr_[0] = {}; const int CGI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t CGI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CGI_oer_ext_arr_, 4, CGI_oer_p_}; static const Per_Constraint CGI_per_cons_; const ASN_PERdescriptor_t CGI_per_ = { &CGI_per_cons_ }; const TTCN_Typedescriptor_t CGI_descr_ = { "@RANAP-IEs.CGI", &SEQUENCE_ber_, NULL, NULL, NULL, &CGI_json_, &CGI_oer_, &CGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst32", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst32.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst32.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst32.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for CGI__ExtIEs_1_Extension const int CGI__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int CGI__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t CGI__ExtIEs_1_Extension_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CGI__ExtIEs_1_Extension_oer_ext_arr_, 0, CGI__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t CGI__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.CGI-ExtIEs.1.&Extension", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &CGI__ExtIEs_1_Extension_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_CGI__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& CGI__ExtIEs_1_criticality = const_CGI__ExtIEs_1_criticality; INTEGER const_CGI__ExtIEs_1_id; const INTEGER& CGI__ExtIEs_1_id = const_CGI__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_CGI__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& CGI__ExtIEs_1_presence = const_CGI__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst32.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst32", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst32.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst32_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_default_coding(""); const ASN_Tag_t CGI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t CGI_iE__Extensions_ber_ = { 1u, CGI_iE__Extensions_tag_ }; // No XER for CGI_iE__Extensions const int CGI_iE__Extensions_oer_ext_arr_[0] = {}; const int CGI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CGI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CGI_iE__Extensions_oer_ext_arr_, 0, CGI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CGI_iE__Extensions_descr_ = { "@RANAP-IEs.CGI.iE-Extensions", &CGI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_json_, &CGI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst32_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CGI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CGI_default_coding(""); const ASN_Tag_t SourceCellID_sourceGERANCellID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SourceCellID_sourceGERANCellID_ber_ = { 1u, SourceCellID_sourceGERANCellID_tag_ }; // No XER for SourceCellID_sourceGERANCellID const int SourceCellID_sourceGERANCellID_oer_ext_arr_[0] = {}; const int SourceCellID_sourceGERANCellID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SourceCellID_sourceGERANCellID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceCellID_sourceGERANCellID_oer_ext_arr_, 4, SourceCellID_sourceGERANCellID_oer_p_}; const TTCN_Typedescriptor_t SourceCellID_sourceGERANCellID_descr_ = { "@RANAP-IEs.SourceCellID.sourceGERANCellID", &SourceCellID_sourceGERANCellID_ber_, NULL, NULL, NULL, &CGI_json_, &SourceCellID_sourceGERANCellID_oer_, &CGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceCellID_sourceGERANCellID_default_coding(""); UNIVERSAL_CHARSTRING SourceCellID_default_coding(""); const ASN_Tag_t CellLoadInformationGroup_sourceCellID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CellLoadInformationGroup_sourceCellID_ber_ = { 1u, CellLoadInformationGroup_sourceCellID_tag_ }; // No XER for CellLoadInformationGroup_sourceCellID const int CellLoadInformationGroup_sourceCellID_oer_ext_arr_[0] = {}; const int CellLoadInformationGroup_sourceCellID_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformationGroup_sourceCellID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, CellLoadInformationGroup_sourceCellID_oer_ext_arr_, 0, CellLoadInformationGroup_sourceCellID_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformationGroup_sourceCellID_descr_ = { "@RANAP-IEs.CellLoadInformationGroup.sourceCellID", &CellLoadInformationGroup_sourceCellID_ber_, NULL, NULL, NULL, &SourceCellID_json_, &CellLoadInformationGroup_sourceCellID_oer_, &SourceCellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformationGroup_sourceCellID_default_coding(""); // No XER for CellLoadInformationGroup const TTCN_JSONdescriptor_t CellLoadInformationGroup_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CellLoadInformationGroup_oer_ext_arr_[0] = {}; const int CellLoadInformationGroup_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t CellLoadInformationGroup_oer_ = { -1, TRUE, -1, TRUE, 4, 0, CellLoadInformationGroup_oer_ext_arr_, 4, CellLoadInformationGroup_oer_p_}; static const Per_Constraint CellLoadInformationGroup_per_cons_; const ASN_PERdescriptor_t CellLoadInformationGroup_per_ = { &CellLoadInformationGroup_per_cons_ }; const TTCN_Typedescriptor_t CellLoadInformationGroup_descr_ = { "@RANAP-IEs.CellLoadInformationGroup", &SEQUENCE_ber_, NULL, NULL, NULL, &CellLoadInformationGroup_json_, &CellLoadInformationGroup_oer_, &CellLoadInformationGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t CellLoadInformationGroup_uplinkCellLoadInformation_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CellLoadInformationGroup_uplinkCellLoadInformation_ber_ = { 1u, CellLoadInformationGroup_uplinkCellLoadInformation_tag_ }; // No XER for CellLoadInformationGroup_uplinkCellLoadInformation const int CellLoadInformationGroup_uplinkCellLoadInformation_oer_ext_arr_[0] = {}; const int CellLoadInformationGroup_uplinkCellLoadInformation_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t CellLoadInformationGroup_uplinkCellLoadInformation_oer_ = { -1, TRUE, -1, TRUE, 5, 0, CellLoadInformationGroup_uplinkCellLoadInformation_oer_ext_arr_, 5, CellLoadInformationGroup_uplinkCellLoadInformation_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformationGroup_uplinkCellLoadInformation_descr_ = { "@RANAP-IEs.CellLoadInformationGroup.uplinkCellLoadInformation", &CellLoadInformationGroup_uplinkCellLoadInformation_ber_, NULL, NULL, NULL, &CellLoadInformation_json_, &CellLoadInformationGroup_uplinkCellLoadInformation_oer_, &CellLoadInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformationGroup_uplinkCellLoadInformation_default_coding(""); const ASN_Tag_t CellLoadInformationGroup_downlinkCellLoadInformation_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t CellLoadInformationGroup_downlinkCellLoadInformation_ber_ = { 1u, CellLoadInformationGroup_downlinkCellLoadInformation_tag_ }; // No XER for CellLoadInformationGroup_downlinkCellLoadInformation const int CellLoadInformationGroup_downlinkCellLoadInformation_oer_ext_arr_[0] = {}; const int CellLoadInformationGroup_downlinkCellLoadInformation_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t CellLoadInformationGroup_downlinkCellLoadInformation_oer_ = { -1, TRUE, -1, TRUE, 5, 0, CellLoadInformationGroup_downlinkCellLoadInformation_oer_ext_arr_, 5, CellLoadInformationGroup_downlinkCellLoadInformation_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformationGroup_downlinkCellLoadInformation_descr_ = { "@RANAP-IEs.CellLoadInformationGroup.downlinkCellLoadInformation", &CellLoadInformationGroup_downlinkCellLoadInformation_ber_, NULL, NULL, NULL, &CellLoadInformation_json_, &CellLoadInformationGroup_downlinkCellLoadInformation_oer_, &CellLoadInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformationGroup_downlinkCellLoadInformation_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst33", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst33.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst33.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst33.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst33.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst33", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst33.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst33_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_default_coding(""); const ASN_Tag_t CellLoadInformationGroup_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t CellLoadInformationGroup_iE__Extensions_ber_ = { 1u, CellLoadInformationGroup_iE__Extensions_tag_ }; // No XER for CellLoadInformationGroup_iE__Extensions const int CellLoadInformationGroup_iE__Extensions_oer_ext_arr_[0] = {}; const int CellLoadInformationGroup_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellLoadInformationGroup_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellLoadInformationGroup_iE__Extensions_oer_ext_arr_, 0, CellLoadInformationGroup_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CellLoadInformationGroup_iE__Extensions_descr_ = { "@RANAP-IEs.CellLoadInformationGroup.iE-Extensions", &CellLoadInformationGroup_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_json_, &CellLoadInformationGroup_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst33_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellLoadInformationGroup_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CellLoadInformationGroup_default_coding(""); // No XER for CellType const TTCN_JSONdescriptor_t CellType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CellType_oer_ext_arr_[0] = {}; const int CellType_oer_p_[0] = {}; const TTCN_OERdescriptor_t CellType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CellType_oer_ext_arr_, 0, CellType_oer_p_}; static const Per_Constraint CellType_per_cons_; const ASN_PERdescriptor_t CellType_per_ = { &CellType_per_cons_ }; const TTCN_Typedescriptor_t CellType_descr_ = { "@RANAP-IEs.CellType", &ENUMERATED_ber_, NULL, NULL, NULL, &CellType_json_, &CellType_oer_, &CellType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CellType_default_coding(""); const TTCN_Typedescriptor_t& CivicAddress_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING CivicAddress_default_coding(""); // No XER for ClientType const TTCN_JSONdescriptor_t ClientType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ClientType_oer_ext_arr_[0] = {}; const int ClientType_oer_p_[0] = {}; const TTCN_OERdescriptor_t ClientType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ClientType_oer_ext_arr_, 0, ClientType_oer_p_}; static const Per_Constraint ClientType_per_cons_; const ASN_PERdescriptor_t ClientType_per_ = { &ClientType_per_cons_ }; const TTCN_Typedescriptor_t ClientType_descr_ = { "@RANAP-IEs.ClientType", &ENUMERATED_ber_, NULL, NULL, NULL, &ClientType_json_, &ClientType_oer_, &ClientType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ClientType_default_coding(""); // No XER for CriticalityDiagnostics const TTCN_JSONdescriptor_t CriticalityDiagnostics_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CriticalityDiagnostics_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t CriticalityDiagnostics_oer_ = { -1, TRUE, -1, TRUE, 5, 0, CriticalityDiagnostics_oer_ext_arr_, 5, CriticalityDiagnostics_oer_p_}; static const Per_Constraint CriticalityDiagnostics_per_cons_; const ASN_PERdescriptor_t CriticalityDiagnostics_per_ = { &CriticalityDiagnostics_per_cons_ }; const TTCN_Typedescriptor_t CriticalityDiagnostics_descr_ = { "@RANAP-IEs.CriticalityDiagnostics", &SEQUENCE_ber_, NULL, NULL, NULL, &CriticalityDiagnostics_json_, &CriticalityDiagnostics_oer_, &CriticalityDiagnostics_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t CriticalityDiagnostics_procedureCode_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CriticalityDiagnostics_procedureCode_ber_ = { 1u, CriticalityDiagnostics_procedureCode_tag_ }; // No XER for CriticalityDiagnostics_procedureCode const int CriticalityDiagnostics_procedureCode_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_procedureCode_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics_procedureCode_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CriticalityDiagnostics_procedureCode_oer_ext_arr_, 0, CriticalityDiagnostics_procedureCode_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics_procedureCode_descr_ = { "@RANAP-IEs.CriticalityDiagnostics.procedureCode", &CriticalityDiagnostics_procedureCode_ber_, NULL, NULL, NULL, &INTEGER_json_, &CriticalityDiagnostics_procedureCode_oer_, &RANAP__CommonDataTypes::ProcedureCode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics_procedureCode_default_coding(""); const ASN_Tag_t CriticalityDiagnostics_triggeringMessage_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CriticalityDiagnostics_triggeringMessage_ber_ = { 1u, CriticalityDiagnostics_triggeringMessage_tag_ }; // No XER for CriticalityDiagnostics_triggeringMessage const int CriticalityDiagnostics_triggeringMessage_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_triggeringMessage_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics_triggeringMessage_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics_triggeringMessage_oer_ext_arr_, 0, CriticalityDiagnostics_triggeringMessage_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics_triggeringMessage_descr_ = { "@RANAP-IEs.CriticalityDiagnostics.triggeringMessage", &CriticalityDiagnostics_triggeringMessage_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::TriggeringMessage_json_, &CriticalityDiagnostics_triggeringMessage_oer_, &RANAP__CommonDataTypes::TriggeringMessage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics_triggeringMessage_default_coding(""); const ASN_Tag_t CriticalityDiagnostics_procedureCriticality_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t CriticalityDiagnostics_procedureCriticality_ber_ = { 1u, CriticalityDiagnostics_procedureCriticality_tag_ }; // No XER for CriticalityDiagnostics_procedureCriticality const int CriticalityDiagnostics_procedureCriticality_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_procedureCriticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics_procedureCriticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics_procedureCriticality_oer_ext_arr_, 0, CriticalityDiagnostics_procedureCriticality_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics_procedureCriticality_descr_ = { "@RANAP-IEs.CriticalityDiagnostics.procedureCriticality", &CriticalityDiagnostics_procedureCriticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &CriticalityDiagnostics_procedureCriticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics_procedureCriticality_default_coding(""); // No XER for CriticalityDiagnostics__IE__List const TTCN_JSONdescriptor_t CriticalityDiagnostics__IE__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CriticalityDiagnostics__IE__List_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics__IE__List_oer_ext_arr_, 0, CriticalityDiagnostics__IE__List_oer_p_}; static Per_Integer_Constraint CriticalityDiagnostics__IE__List_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t CriticalityDiagnostics__IE__List_per_ = { &CriticalityDiagnostics__IE__List_per_cons_ }; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List", &SEQUENCE_ber_, NULL, NULL, NULL, &CriticalityDiagnostics__IE__List_json_, &CriticalityDiagnostics__IE__List_oer_, &CriticalityDiagnostics__IE__List_per_, &CriticalityDiagnostics__IE__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t CriticalityDiagnostics__IE__List_0_iECriticality_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t CriticalityDiagnostics__IE__List_0_iECriticality_ber_ = { 1u, CriticalityDiagnostics__IE__List_0_iECriticality_tag_ }; // No XER for CriticalityDiagnostics__IE__List_0_iECriticality const int CriticalityDiagnostics__IE__List_0_iECriticality_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_0_iECriticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_0_iECriticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics__IE__List_0_iECriticality_oer_ext_arr_, 0, CriticalityDiagnostics__IE__List_0_iECriticality_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_0_iECriticality_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List.SEQUENCE.iECriticality", &CriticalityDiagnostics__IE__List_0_iECriticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &CriticalityDiagnostics__IE__List_0_iECriticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_0_iECriticality_default_coding(""); const ASN_Tag_t CriticalityDiagnostics__IE__List_0_iE__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t CriticalityDiagnostics__IE__List_0_iE__ID_ber_ = { 1u, CriticalityDiagnostics__IE__List_0_iE__ID_tag_ }; // No XER for CriticalityDiagnostics__IE__List_0_iE__ID const int CriticalityDiagnostics__IE__List_0_iE__ID_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_0_iE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_0_iE__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, CriticalityDiagnostics__IE__List_0_iE__ID_oer_ext_arr_, 0, CriticalityDiagnostics__IE__List_0_iE__ID_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_0_iE__ID_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List.SEQUENCE.iE-ID", &CriticalityDiagnostics__IE__List_0_iE__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &CriticalityDiagnostics__IE__List_0_iE__ID_oer_, &RANAP__CommonDataTypes::ProtocolIE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_0_iE__ID_default_coding(""); // No XER for CriticalityDiagnostics__IE__List_0 const TTCN_JSONdescriptor_t CriticalityDiagnostics__IE__List_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CriticalityDiagnostics__IE__List_0_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_0_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_0_oer_ = { -1, TRUE, -1, TRUE, 4, 0, CriticalityDiagnostics__IE__List_0_oer_ext_arr_, 4, CriticalityDiagnostics__IE__List_0_oer_p_}; static const Per_Constraint CriticalityDiagnostics__IE__List_0_per_cons_; const ASN_PERdescriptor_t CriticalityDiagnostics__IE__List_0_per_ = { &CriticalityDiagnostics__IE__List_0_per_cons_ }; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_0_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &CriticalityDiagnostics__IE__List_0_json_, &CriticalityDiagnostics__IE__List_0_oer_, &CriticalityDiagnostics__IE__List_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RepetitionNumber0 const int RepetitionNumber0_oer_ext_arr_[0] = {}; const int RepetitionNumber0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RepetitionNumber0_oer_ = { 1, FALSE, -1, FALSE, 0, 0, RepetitionNumber0_oer_ext_arr_, 0, RepetitionNumber0_oer_p_}; static Per_Integer_Constraint RepetitionNumber0_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t RepetitionNumber0_per_ = { &RepetitionNumber0_per_cons_ }; const TTCN_Typedescriptor_t RepetitionNumber0_descr_ = { "@RANAP-IEs.RepetitionNumber0", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RepetitionNumber0_oer_, &RepetitionNumber0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RepetitionNumber0_default_coding(""); const ASN_Tag_t CriticalityDiagnostics__IE__List_0_repetitionNumber_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t CriticalityDiagnostics__IE__List_0_repetitionNumber_ber_ = { 1u, CriticalityDiagnostics__IE__List_0_repetitionNumber_tag_ }; // No XER for CriticalityDiagnostics__IE__List_0_repetitionNumber const int CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_ = { 1, FALSE, -1, FALSE, 0, 0, CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_ext_arr_, 0, CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_0_repetitionNumber_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List.SEQUENCE.repetitionNumber", &CriticalityDiagnostics__IE__List_0_repetitionNumber_ber_, NULL, NULL, NULL, &INTEGER_json_, &CriticalityDiagnostics__IE__List_0_repetitionNumber_oer_, &RepetitionNumber0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_0_repetitionNumber_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst34", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst35.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst35.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst35.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MessageStructure const TTCN_JSONdescriptor_t MessageStructure_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MessageStructure_oer_ext_arr_[0] = {}; const int MessageStructure_oer_p_[0] = {}; const TTCN_OERdescriptor_t MessageStructure_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MessageStructure_oer_ext_arr_, 0, MessageStructure_oer_p_}; static Per_Integer_Constraint MessageStructure_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t MessageStructure_per_ = { &MessageStructure_per_cons_ }; const TTCN_Typedescriptor_t MessageStructure_descr_ = { "@RANAP-IEs.MessageStructure", &SEQUENCE_ber_, NULL, NULL, NULL, &MessageStructure_json_, &MessageStructure_oer_, &MessageStructure_per_, &MessageStructure_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t MessageStructure_0_iE__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MessageStructure_0_iE__ID_ber_ = { 1u, MessageStructure_0_iE__ID_tag_ }; // No XER for MessageStructure_0_iE__ID const int MessageStructure_0_iE__ID_oer_ext_arr_[0] = {}; const int MessageStructure_0_iE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t MessageStructure_0_iE__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, MessageStructure_0_iE__ID_oer_ext_arr_, 0, MessageStructure_0_iE__ID_oer_p_}; const TTCN_Typedescriptor_t MessageStructure_0_iE__ID_descr_ = { "@RANAP-IEs.MessageStructure.SEQUENCE.iE-ID", &MessageStructure_0_iE__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &MessageStructure_0_iE__ID_oer_, &RANAP__CommonDataTypes::ProtocolIE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MessageStructure_0_iE__ID_default_coding(""); // No XER for MessageStructure_0 const TTCN_JSONdescriptor_t MessageStructure_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MessageStructure_0_oer_ext_arr_[0] = {}; const int MessageStructure_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t MessageStructure_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, MessageStructure_0_oer_ext_arr_, 3, MessageStructure_0_oer_p_}; static const Per_Constraint MessageStructure_0_per_cons_; const ASN_PERdescriptor_t MessageStructure_0_per_ = { &MessageStructure_0_per_cons_ }; const TTCN_Typedescriptor_t MessageStructure_0_descr_ = { "@RANAP-IEs.MessageStructure.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &MessageStructure_0_json_, &MessageStructure_0_oer_, &MessageStructure_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RepetitionNumber1 const int RepetitionNumber1_oer_ext_arr_[0] = {}; const int RepetitionNumber1_oer_p_[0] = {}; const TTCN_OERdescriptor_t RepetitionNumber1_oer_ = { 2, FALSE, -1, FALSE, 0, 0, RepetitionNumber1_oer_ext_arr_, 0, RepetitionNumber1_oer_p_}; static Per_Integer_Constraint RepetitionNumber1_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t RepetitionNumber1_per_ = { &RepetitionNumber1_per_cons_ }; const TTCN_Typedescriptor_t RepetitionNumber1_descr_ = { "@RANAP-IEs.RepetitionNumber1", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RepetitionNumber1_oer_, &RepetitionNumber1_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RepetitionNumber1_default_coding(""); const ASN_Tag_t MessageStructure_0_repetitionNumber_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MessageStructure_0_repetitionNumber_ber_ = { 1u, MessageStructure_0_repetitionNumber_tag_ }; // No XER for MessageStructure_0_repetitionNumber const int MessageStructure_0_repetitionNumber_oer_ext_arr_[0] = {}; const int MessageStructure_0_repetitionNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t MessageStructure_0_repetitionNumber_oer_ = { 2, FALSE, -1, FALSE, 0, 0, MessageStructure_0_repetitionNumber_oer_ext_arr_, 0, MessageStructure_0_repetitionNumber_oer_p_}; const TTCN_Typedescriptor_t MessageStructure_0_repetitionNumber_descr_ = { "@RANAP-IEs.MessageStructure.SEQUENCE.repetitionNumber", &MessageStructure_0_repetitionNumber_ber_, NULL, NULL, NULL, &INTEGER_json_, &MessageStructure_0_repetitionNumber_oer_, &RepetitionNumber1_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MessageStructure_0_repetitionNumber_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst35", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst34.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst34.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst34.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst34.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst34", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst35.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst34_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_default_coding(""); const ASN_Tag_t MessageStructure_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t MessageStructure_0_iE__Extensions_ber_ = { 1u, MessageStructure_0_iE__Extensions_tag_ }; // No XER for MessageStructure_0_iE__Extensions const int MessageStructure_0_iE__Extensions_oer_ext_arr_[0] = {}; const int MessageStructure_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t MessageStructure_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MessageStructure_0_iE__Extensions_oer_ext_arr_, 0, MessageStructure_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t MessageStructure_0_iE__Extensions_descr_ = { "@RANAP-IEs.MessageStructure.SEQUENCE.iE-Extensions", &MessageStructure_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_json_, &MessageStructure_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst35_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MessageStructure_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING MessageStructure_0_default_coding(""); UNIVERSAL_CHARSTRING MessageStructure_default_coding(""); RANAP__CommonDataTypes::Criticality const_CriticalityDiagnostics__IE__List__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& CriticalityDiagnostics__IE__List__ExtIEs_1_criticality = const_CriticalityDiagnostics__IE__List__ExtIEs_1_criticality; INTEGER const_CriticalityDiagnostics__IE__List__ExtIEs_1_id; const INTEGER& CriticalityDiagnostics__IE__List__ExtIEs_1_id = const_CriticalityDiagnostics__IE__List__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_CriticalityDiagnostics__IE__List__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& CriticalityDiagnostics__IE__List__ExtIEs_1_presence = const_CriticalityDiagnostics__IE__List__ExtIEs_1_presence; // No XER for TypeOfError const TTCN_JSONdescriptor_t TypeOfError_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TypeOfError_oer_ext_arr_[0] = {}; const int TypeOfError_oer_p_[0] = {}; const TTCN_OERdescriptor_t TypeOfError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TypeOfError_oer_ext_arr_, 0, TypeOfError_oer_p_}; static const Per_Constraint TypeOfError_per_cons_; const ASN_PERdescriptor_t TypeOfError_per_ = { &TypeOfError_per_cons_ }; const TTCN_Typedescriptor_t TypeOfError_descr_ = { "@RANAP-IEs.TypeOfError", &ENUMERATED_ber_, NULL, NULL, NULL, &TypeOfError_json_, &TypeOfError_oer_, &TypeOfError_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TypeOfError_default_coding(""); RANAP__CommonDataTypes::Criticality const_CriticalityDiagnostics__IE__List__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& CriticalityDiagnostics__IE__List__ExtIEs_2_criticality = const_CriticalityDiagnostics__IE__List__ExtIEs_2_criticality; INTEGER const_CriticalityDiagnostics__IE__List__ExtIEs_2_id; const INTEGER& CriticalityDiagnostics__IE__List__ExtIEs_2_id = const_CriticalityDiagnostics__IE__List__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_CriticalityDiagnostics__IE__List__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& CriticalityDiagnostics__IE__List__ExtIEs_2_presence = const_CriticalityDiagnostics__IE__List__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst35.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst35", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst34.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst35_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_default_coding(""); const ASN_Tag_t CriticalityDiagnostics__IE__List_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t CriticalityDiagnostics__IE__List_0_iE__Extensions_ber_ = { 1u, CriticalityDiagnostics__IE__List_0_iE__Extensions_tag_ }; // No XER for CriticalityDiagnostics__IE__List_0_iE__Extensions const int CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_ext_arr_, 0, CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics__IE__List_0_iE__Extensions_descr_ = { "@RANAP-IEs.CriticalityDiagnostics-IE-List.SEQUENCE.iE-Extensions", &CriticalityDiagnostics__IE__List_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_json_, &CriticalityDiagnostics__IE__List_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst34_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_0_default_coding(""); UNIVERSAL_CHARSTRING CriticalityDiagnostics__IE__List_default_coding(""); const ASN_Tag_t CriticalityDiagnostics_iEsCriticalityDiagnostics_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t CriticalityDiagnostics_iEsCriticalityDiagnostics_ber_ = { 1u, CriticalityDiagnostics_iEsCriticalityDiagnostics_tag_ }; // No XER for CriticalityDiagnostics_iEsCriticalityDiagnostics const int CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_ext_arr_, 0, CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics_iEsCriticalityDiagnostics_descr_ = { "@RANAP-IEs.CriticalityDiagnostics.iEsCriticalityDiagnostics", &CriticalityDiagnostics_iEsCriticalityDiagnostics_ber_, NULL, NULL, NULL, &CriticalityDiagnostics__IE__List_json_, &CriticalityDiagnostics_iEsCriticalityDiagnostics_oer_, &CriticalityDiagnostics__IE__List_per_, &CriticalityDiagnostics__IE__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics_iEsCriticalityDiagnostics_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst36", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst36.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst36.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst36.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst36.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst36", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst36.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst36_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_default_coding(""); const ASN_Tag_t CriticalityDiagnostics_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t CriticalityDiagnostics_iE__Extensions_ber_ = { 1u, CriticalityDiagnostics_iE__Extensions_tag_ }; // No XER for CriticalityDiagnostics_iE__Extensions const int CriticalityDiagnostics_iE__Extensions_oer_ext_arr_[0] = {}; const int CriticalityDiagnostics_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t CriticalityDiagnostics_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CriticalityDiagnostics_iE__Extensions_oer_ext_arr_, 0, CriticalityDiagnostics_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t CriticalityDiagnostics_iE__Extensions_descr_ = { "@RANAP-IEs.CriticalityDiagnostics.iE-Extensions", &CriticalityDiagnostics_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_json_, &CriticalityDiagnostics_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst36_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CriticalityDiagnostics_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING CriticalityDiagnostics_default_coding(""); // No XER for EncryptionAlgorithm const int EncryptionAlgorithm_oer_ext_arr_[0] = {}; const int EncryptionAlgorithm_oer_p_[0] = {}; const TTCN_OERdescriptor_t EncryptionAlgorithm_oer_ = { 1, FALSE, -1, FALSE, 0, 0, EncryptionAlgorithm_oer_ext_arr_, 0, EncryptionAlgorithm_oer_p_}; static Per_Integer_Constraint EncryptionAlgorithm_per_cons_(new INTEGER(0), new INTEGER(15), FALSE); const ASN_PERdescriptor_t EncryptionAlgorithm_per_ = { &EncryptionAlgorithm_per_cons_ }; const TTCN_Typedescriptor_t EncryptionAlgorithm_descr_ = { "@RANAP-IEs.EncryptionAlgorithm", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &EncryptionAlgorithm_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EncryptionAlgorithm_default_coding(""); // No XER for ChosenEncryptionAlgorithm const int ChosenEncryptionAlgorithm_oer_ext_arr_[0] = {}; const int ChosenEncryptionAlgorithm_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChosenEncryptionAlgorithm_oer_ = { 1, FALSE, -1, FALSE, 0, 0, ChosenEncryptionAlgorithm_oer_ext_arr_, 0, ChosenEncryptionAlgorithm_oer_p_}; const TTCN_Typedescriptor_t ChosenEncryptionAlgorithm_descr_ = { "@RANAP-IEs.ChosenEncryptionAlgorithm", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ChosenEncryptionAlgorithm_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChosenEncryptionAlgorithm_default_coding(""); // No XER for IntegrityProtectionAlgorithm const int IntegrityProtectionAlgorithm_oer_ext_arr_[0] = {}; const int IntegrityProtectionAlgorithm_oer_p_[0] = {}; const TTCN_OERdescriptor_t IntegrityProtectionAlgorithm_oer_ = { 1, FALSE, -1, FALSE, 0, 0, IntegrityProtectionAlgorithm_oer_ext_arr_, 0, IntegrityProtectionAlgorithm_oer_p_}; static Per_Integer_Constraint IntegrityProtectionAlgorithm_per_cons_(new INTEGER(0), new INTEGER(15), FALSE); const ASN_PERdescriptor_t IntegrityProtectionAlgorithm_per_ = { &IntegrityProtectionAlgorithm_per_cons_ }; const TTCN_Typedescriptor_t IntegrityProtectionAlgorithm_descr_ = { "@RANAP-IEs.IntegrityProtectionAlgorithm", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &IntegrityProtectionAlgorithm_oer_, &IntegrityProtectionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IntegrityProtectionAlgorithm_default_coding(""); // No XER for ChosenIntegrityProtectionAlgorithm const int ChosenIntegrityProtectionAlgorithm_oer_ext_arr_[0] = {}; const int ChosenIntegrityProtectionAlgorithm_oer_p_[0] = {}; const TTCN_OERdescriptor_t ChosenIntegrityProtectionAlgorithm_oer_ = { 1, FALSE, -1, FALSE, 0, 0, ChosenIntegrityProtectionAlgorithm_oer_ext_arr_, 0, ChosenIntegrityProtectionAlgorithm_oer_p_}; const TTCN_Typedescriptor_t ChosenIntegrityProtectionAlgorithm_descr_ = { "@RANAP-IEs.ChosenIntegrityProtectionAlgorithm", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ChosenIntegrityProtectionAlgorithm_oer_, &IntegrityProtectionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ChosenIntegrityProtectionAlgorithm_default_coding(""); const TTCN_Typedescriptor_t& ClassmarkInformation2_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING ClassmarkInformation2_default_coding(""); const TTCN_Typedescriptor_t& ClassmarkInformation3_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING ClassmarkInformation3_default_coding(""); // No XER for CN__DomainIndicator const TTCN_JSONdescriptor_t CN__DomainIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CN__DomainIndicator_oer_ext_arr_[0] = {}; const int CN__DomainIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t CN__DomainIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CN__DomainIndicator_oer_ext_arr_, 0, CN__DomainIndicator_oer_p_}; static const Per_Constraint CN__DomainIndicator_per_cons_; const ASN_PERdescriptor_t CN__DomainIndicator_per_ = { &CN__DomainIndicator_per_cons_ }; const TTCN_Typedescriptor_t CN__DomainIndicator_descr_ = { "@RANAP-IEs.CN-DomainIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &CN__DomainIndicator_json_, &CN__DomainIndicator_oer_, &CN__DomainIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__DomainIndicator_default_coding(""); // No XER for CN__ID const int CN__ID_oer_ext_arr_[0] = {}; const int CN__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t CN__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, CN__ID_oer_ext_arr_, 0, CN__ID_oer_p_}; static Per_Integer_Constraint CN__ID_per_cons_(new INTEGER(0), new INTEGER(4095), FALSE); const ASN_PERdescriptor_t CN__ID_per_ = { &CN__ID_per_cons_ }; const TTCN_Typedescriptor_t CN__ID_descr_ = { "@RANAP-IEs.CN-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &CN__ID_oer_, &CN__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CN__ID_default_coding(""); // No XER for Correlation__ID const int Correlation__ID_oer_ext_arr_[0] = {}; const int Correlation__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t Correlation__ID_oer_ = { -1, TRUE, 4, FALSE, 0, 0, Correlation__ID_oer_ext_arr_, 0, Correlation__ID_oer_p_}; static Per_Integer_Constraint Correlation__ID_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); const ASN_PERdescriptor_t Correlation__ID_per_ = { &Correlation__ID_per_cons_ }; const TTCN_Typedescriptor_t Correlation__ID_descr_ = { "@RANAP-IEs.Correlation-ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Correlation__ID_oer_, &Correlation__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Correlation__ID_default_coding(""); // No XER for CSFB__Information const TTCN_JSONdescriptor_t CSFB__Information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CSFB__Information_oer_ext_arr_[0] = {}; const int CSFB__Information_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSFB__Information_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CSFB__Information_oer_ext_arr_, 0, CSFB__Information_oer_p_}; static const Per_Constraint CSFB__Information_per_cons_; const ASN_PERdescriptor_t CSFB__Information_per_ = { &CSFB__Information_per_cons_ }; const TTCN_Typedescriptor_t CSFB__Information_descr_ = { "@RANAP-IEs.CSFB-Information", &ENUMERATED_ber_, NULL, NULL, NULL, &CSFB__Information_json_, &CSFB__Information_oer_, &CSFB__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSFB__Information_default_coding(""); // No XER for CSG__Id const int CSG__Id_oer_ext_arr_[0] = {}; const int CSG__Id_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__Id_oer_ = { -1, TRUE, 27, FALSE, 0, 0, CSG__Id_oer_ext_arr_, 0, CSG__Id_oer_p_}; static Per_Integer_Constraint CSG__Id_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(27), FALSE); static Per_BitString_Constraint CSG__Id_per_cons_(FALSE, &CSG__Id_size_per_cons_); const ASN_PERdescriptor_t CSG__Id_per_ = { &CSG__Id_per_cons_ }; const TTCN_Typedescriptor_t CSG__Id_descr_ = { "@RANAP-IEs.CSG-Id", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &CSG__Id_oer_, &CSG__Id_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id_default_coding(""); // No XER for CSG__Id__List const TTCN_JSONdescriptor_t CSG__Id__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CSG__Id__List_oer_ext_arr_[0] = {}; const int CSG__Id__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__Id__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CSG__Id__List_oer_ext_arr_, 0, CSG__Id__List_oer_p_}; static Per_Integer_Constraint CSG__Id__List_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t CSG__Id__List_per_ = { &CSG__Id__List_per_cons_ }; const TTCN_Typedescriptor_t CSG__Id__List_descr_ = { "@RANAP-IEs.CSG-Id-List", &SEQUENCE_ber_, NULL, NULL, NULL, &CSG__Id__List_json_, &CSG__Id__List_oer_, &CSG__Id__List_per_, &CSG__Id__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for CSG__Id__List_0 const int CSG__Id__List_0_oer_ext_arr_[0] = {}; const int CSG__Id__List_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__Id__List_0_oer_ = { -1, TRUE, 27, FALSE, 0, 0, CSG__Id__List_0_oer_ext_arr_, 0, CSG__Id__List_0_oer_p_}; const TTCN_Typedescriptor_t CSG__Id__List_0_descr_ = { "@RANAP-IEs.CSG-Id-List.", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &CSG__Id__List_0_oer_, &CSG__Id_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Id__List_0_default_coding(""); UNIVERSAL_CHARSTRING CSG__Id__List_default_coding(""); // No XER for CSG__Membership__Status const TTCN_JSONdescriptor_t CSG__Membership__Status_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int CSG__Membership__Status_oer_ext_arr_[0] = {}; const int CSG__Membership__Status_oer_p_[0] = {}; const TTCN_OERdescriptor_t CSG__Membership__Status_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CSG__Membership__Status_oer_ext_arr_, 0, CSG__Membership__Status_oer_p_}; static const Per_Constraint CSG__Membership__Status_per_cons_; const ASN_PERdescriptor_t CSG__Membership__Status_per_ = { &CSG__Membership__Status_per_cons_ }; const TTCN_Typedescriptor_t CSG__Membership__Status_descr_ = { "@RANAP-IEs.CSG-Membership-Status", &ENUMERATED_ber_, NULL, NULL, NULL, &CSG__Membership__Status_json_, &CSG__Membership__Status_oer_, &CSG__Membership__Status_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING CSG__Membership__Status_default_coding(""); // No XER for DataPDUType const TTCN_JSONdescriptor_t DataPDUType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DataPDUType_oer_ext_arr_[0] = {}; const int DataPDUType_oer_p_[0] = {}; const TTCN_OERdescriptor_t DataPDUType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DataPDUType_oer_ext_arr_, 0, DataPDUType_oer_p_}; static const Per_Constraint DataPDUType_per_cons_; const ASN_PERdescriptor_t DataPDUType_per_ = { &DataPDUType_per_cons_ }; const TTCN_Typedescriptor_t DataPDUType_descr_ = { "@RANAP-IEs.DataPDUType", &ENUMERATED_ber_, NULL, NULL, NULL, &DataPDUType_json_, &DataPDUType_oer_, &DataPDUType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DataPDUType_default_coding(""); // No XER for DataVolumeReference const int DataVolumeReference_oer_ext_arr_[0] = {}; const int DataVolumeReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t DataVolumeReference_oer_ = { 1, FALSE, -1, FALSE, 0, 0, DataVolumeReference_oer_ext_arr_, 0, DataVolumeReference_oer_p_}; static Per_Integer_Constraint DataVolumeReference_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t DataVolumeReference_per_ = { &DataVolumeReference_per_cons_ }; const TTCN_Typedescriptor_t DataVolumeReference_descr_ = { "@RANAP-IEs.DataVolumeReference", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DataVolumeReference_oer_, &DataVolumeReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DataVolumeReference_default_coding(""); // No XER for DataVolumeReportingIndication const TTCN_JSONdescriptor_t DataVolumeReportingIndication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DataVolumeReportingIndication_oer_ext_arr_[0] = {}; const int DataVolumeReportingIndication_oer_p_[0] = {}; const TTCN_OERdescriptor_t DataVolumeReportingIndication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DataVolumeReportingIndication_oer_ext_arr_, 0, DataVolumeReportingIndication_oer_p_}; static const Per_Constraint DataVolumeReportingIndication_per_cons_; const ASN_PERdescriptor_t DataVolumeReportingIndication_per_ = { &DataVolumeReportingIndication_per_cons_ }; const TTCN_Typedescriptor_t DataVolumeReportingIndication_descr_ = { "@RANAP-IEs.DataVolumeReportingIndication", &ENUMERATED_ber_, NULL, NULL, NULL, &DataVolumeReportingIndication_json_, &DataVolumeReportingIndication_oer_, &DataVolumeReportingIndication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DataVolumeReportingIndication_default_coding(""); // No XER for DCH__ID const int DCH__ID_oer_ext_arr_[0] = {}; const int DCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t DCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, DCH__ID_oer_ext_arr_, 0, DCH__ID_oer_p_}; static Per_Integer_Constraint DCH__ID_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t DCH__ID_per_ = { &DCH__ID_per_cons_ }; const TTCN_Typedescriptor_t DCH__ID_descr_ = { "@RANAP-IEs.DCH-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DCH__ID_oer_, &DCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DCH__ID_default_coding(""); // No XER for DCN__ID const int DCN__ID_oer_ext_arr_[0] = {}; const int DCN__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t DCN__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, DCN__ID_oer_ext_arr_, 0, DCN__ID_oer_p_}; static Per_Integer_Constraint DCN__ID_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t DCN__ID_per_ = { &DCN__ID_per_cons_ }; const TTCN_Typedescriptor_t DCN__ID_descr_ = { "@RANAP-IEs.DCN-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DCN__ID_oer_, &DCN__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DCN__ID_default_coding(""); // No XER for DeltaRAListofIdleModeUEs const TTCN_JSONdescriptor_t DeltaRAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DeltaRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int DeltaRAListofIdleModeUEs_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t DeltaRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeltaRAListofIdleModeUEs_oer_ext_arr_, 3, DeltaRAListofIdleModeUEs_oer_p_}; static const Per_Constraint DeltaRAListofIdleModeUEs_per_cons_; const ASN_PERdescriptor_t DeltaRAListofIdleModeUEs_per_ = { &DeltaRAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t DeltaRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.DeltaRAListofIdleModeUEs", &SEQUENCE_ber_, NULL, NULL, NULL, &DeltaRAListofIdleModeUEs_json_, &DeltaRAListofIdleModeUEs_oer_, &DeltaRAListofIdleModeUEs_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for NewRAListofIdleModeUEs const TTCN_JSONdescriptor_t NewRAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int NewRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int NewRAListofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t NewRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NewRAListofIdleModeUEs_oer_ext_arr_, 0, NewRAListofIdleModeUEs_oer_p_}; static Per_Integer_Constraint NewRAListofIdleModeUEs_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t NewRAListofIdleModeUEs_per_ = { &NewRAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t NewRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.NewRAListofIdleModeUEs", &SEQUENCE_ber_, NULL, NULL, NULL, &NewRAListofIdleModeUEs_json_, &NewRAListofIdleModeUEs_oer_, &NewRAListofIdleModeUEs_per_, &NewRAListofIdleModeUEs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for NewRAListofIdleModeUEs_0 const int NewRAListofIdleModeUEs_0_oer_ext_arr_[0] = {}; const int NewRAListofIdleModeUEs_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t NewRAListofIdleModeUEs_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NewRAListofIdleModeUEs_0_oer_ext_arr_, 0, NewRAListofIdleModeUEs_0_oer_p_}; const TTCN_Typedescriptor_t NewRAListofIdleModeUEs_0_descr_ = { "@RANAP-IEs.NewRAListofIdleModeUEs.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &NewRAListofIdleModeUEs_0_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NewRAListofIdleModeUEs_0_default_coding(""); UNIVERSAL_CHARSTRING NewRAListofIdleModeUEs_default_coding(""); const ASN_Tag_t DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_ber_ = { 1u, DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_tag_ }; // No XER for DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs const int DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_ext_arr_, 0, DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_p_}; const TTCN_Typedescriptor_t DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.DeltaRAListofIdleModeUEs.newRAListofIdleModeUEs", &DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_ber_, NULL, NULL, NULL, &NewRAListofIdleModeUEs_json_, &DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_oer_, &NewRAListofIdleModeUEs_per_, &NewRAListofIdleModeUEs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeltaRAListofIdleModeUEs_newRAListofIdleModeUEs_default_coding(""); // No XER for RAListwithNoIdleModeUEsAnyMore const TTCN_JSONdescriptor_t RAListwithNoIdleModeUEsAnyMore_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAListwithNoIdleModeUEsAnyMore_oer_ext_arr_[0] = {}; const int RAListwithNoIdleModeUEsAnyMore_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAListwithNoIdleModeUEsAnyMore_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAListwithNoIdleModeUEsAnyMore_oer_ext_arr_, 0, RAListwithNoIdleModeUEsAnyMore_oer_p_}; static Per_Integer_Constraint RAListwithNoIdleModeUEsAnyMore_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t RAListwithNoIdleModeUEsAnyMore_per_ = { &RAListwithNoIdleModeUEsAnyMore_per_cons_ }; const TTCN_Typedescriptor_t RAListwithNoIdleModeUEsAnyMore_descr_ = { "@RANAP-IEs.RAListwithNoIdleModeUEsAnyMore", &SEQUENCE_ber_, NULL, NULL, NULL, &RAListwithNoIdleModeUEsAnyMore_json_, &RAListwithNoIdleModeUEsAnyMore_oer_, &RAListwithNoIdleModeUEsAnyMore_per_, &RAListwithNoIdleModeUEsAnyMore_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAListwithNoIdleModeUEsAnyMore_0 const int RAListwithNoIdleModeUEsAnyMore_0_oer_ext_arr_[0] = {}; const int RAListwithNoIdleModeUEsAnyMore_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAListwithNoIdleModeUEsAnyMore_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAListwithNoIdleModeUEsAnyMore_0_oer_ext_arr_, 0, RAListwithNoIdleModeUEsAnyMore_0_oer_p_}; const TTCN_Typedescriptor_t RAListwithNoIdleModeUEsAnyMore_0_descr_ = { "@RANAP-IEs.RAListwithNoIdleModeUEsAnyMore.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RAListwithNoIdleModeUEsAnyMore_0_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAListwithNoIdleModeUEsAnyMore_0_default_coding(""); UNIVERSAL_CHARSTRING RAListwithNoIdleModeUEsAnyMore_default_coding(""); const ASN_Tag_t DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_ber_ = { 1u, DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_tag_ }; // No XER for DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore const int DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_ext_arr_[0] = {}; const int DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_p_[0] = {}; const TTCN_OERdescriptor_t DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_ext_arr_, 0, DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_p_}; const TTCN_Typedescriptor_t DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_descr_ = { "@RANAP-IEs.DeltaRAListofIdleModeUEs.rAListwithNoIdleModeUEsAnyMore", &DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_ber_, NULL, NULL, NULL, &RAListwithNoIdleModeUEsAnyMore_json_, &DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_oer_, &RAListwithNoIdleModeUEsAnyMore_per_, &RAListwithNoIdleModeUEsAnyMore_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeltaRAListofIdleModeUEs_rAListwithNoIdleModeUEsAnyMore_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst37", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst37.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst37.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst37.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for LAListofIdleModeUEs const TTCN_JSONdescriptor_t LAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int LAListofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t LAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAListofIdleModeUEs_oer_ext_arr_, 0, LAListofIdleModeUEs_oer_p_}; static Per_Integer_Constraint LAListofIdleModeUEs_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t LAListofIdleModeUEs_per_ = { &LAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t LAListofIdleModeUEs_descr_ = { "@RANAP-IEs.LAListofIdleModeUEs", &SEQUENCE_ber_, NULL, NULL, NULL, &LAListofIdleModeUEs_json_, &LAListofIdleModeUEs_oer_, &LAListofIdleModeUEs_per_, &LAListofIdleModeUEs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for LAListofIdleModeUEs_0 const int LAListofIdleModeUEs_0_oer_ext_arr_[0] = {}; const int LAListofIdleModeUEs_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LAListofIdleModeUEs_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LAListofIdleModeUEs_0_oer_ext_arr_, 3, LAListofIdleModeUEs_0_oer_p_}; const TTCN_Typedescriptor_t LAListofIdleModeUEs_0_descr_ = { "@RANAP-IEs.LAListofIdleModeUEs.", &SEQUENCE_ber_, NULL, NULL, NULL, &LAI_json_, &LAListofIdleModeUEs_0_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LAListofIdleModeUEs_0_default_coding(""); UNIVERSAL_CHARSTRING LAListofIdleModeUEs_default_coding(""); RANAP__CommonDataTypes::Criticality const_DeltaRAListofIdleModeUEs__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& DeltaRAListofIdleModeUEs__ExtIEs_1_criticality = const_DeltaRAListofIdleModeUEs__ExtIEs_1_criticality; INTEGER const_DeltaRAListofIdleModeUEs__ExtIEs_1_id; const INTEGER& DeltaRAListofIdleModeUEs__ExtIEs_1_id = const_DeltaRAListofIdleModeUEs__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_DeltaRAListofIdleModeUEs__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& DeltaRAListofIdleModeUEs__ExtIEs_1_presence = const_DeltaRAListofIdleModeUEs__ExtIEs_1_presence; RANAP__CommonDataTypes::Criticality const_DeltaRAListofIdleModeUEs__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& DeltaRAListofIdleModeUEs__ExtIEs_2_criticality = const_DeltaRAListofIdleModeUEs__ExtIEs_2_criticality; INTEGER const_DeltaRAListofIdleModeUEs__ExtIEs_2_id; const INTEGER& DeltaRAListofIdleModeUEs__ExtIEs_2_id = const_DeltaRAListofIdleModeUEs__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_DeltaRAListofIdleModeUEs__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& DeltaRAListofIdleModeUEs__ExtIEs_2_presence = const_DeltaRAListofIdleModeUEs__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst37.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst37", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst37.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst37_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_default_coding(""); const ASN_Tag_t DeltaRAListofIdleModeUEs_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t DeltaRAListofIdleModeUEs_iE__Extensions_ber_ = { 1u, DeltaRAListofIdleModeUEs_iE__Extensions_tag_ }; // No XER for DeltaRAListofIdleModeUEs_iE__Extensions const int DeltaRAListofIdleModeUEs_iE__Extensions_oer_ext_arr_[0] = {}; const int DeltaRAListofIdleModeUEs_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t DeltaRAListofIdleModeUEs_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeltaRAListofIdleModeUEs_iE__Extensions_oer_ext_arr_, 0, DeltaRAListofIdleModeUEs_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t DeltaRAListofIdleModeUEs_iE__Extensions_descr_ = { "@RANAP-IEs.DeltaRAListofIdleModeUEs.iE-Extensions", &DeltaRAListofIdleModeUEs_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_json_, &DeltaRAListofIdleModeUEs_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst37_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DeltaRAListofIdleModeUEs_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING DeltaRAListofIdleModeUEs_default_coding(""); // No XER for ForwardingIndication const TTCN_JSONdescriptor_t ForwardingIndication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ForwardingIndication_oer_ext_arr_[0] = {}; const int ForwardingIndication_oer_p_[0] = {}; const TTCN_OERdescriptor_t ForwardingIndication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ForwardingIndication_oer_ext_arr_, 0, ForwardingIndication_oer_p_}; static const Per_Constraint ForwardingIndication_per_cons_; const ASN_PERdescriptor_t ForwardingIndication_per_ = { &ForwardingIndication_per_cons_ }; const TTCN_Typedescriptor_t ForwardingIndication_descr_ = { "@RANAP-IEs.ForwardingIndication", &ENUMERATED_ber_, NULL, NULL, NULL, &ForwardingIndication_json_, &ForwardingIndication_oer_, &ForwardingIndication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ForwardingIndication_default_coding(""); // No XER for DL__GTP__PDU__SequenceNumber const int DL__GTP__PDU__SequenceNumber_oer_ext_arr_[0] = {}; const int DL__GTP__PDU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t DL__GTP__PDU__SequenceNumber_oer_ = { 2, FALSE, -1, FALSE, 0, 0, DL__GTP__PDU__SequenceNumber_oer_ext_arr_, 0, DL__GTP__PDU__SequenceNumber_oer_p_}; static Per_Integer_Constraint DL__GTP__PDU__SequenceNumber_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t DL__GTP__PDU__SequenceNumber_per_ = { &DL__GTP__PDU__SequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t DL__GTP__PDU__SequenceNumber_descr_ = { "@RANAP-IEs.DL-GTP-PDU-SequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DL__GTP__PDU__SequenceNumber_oer_, &DL__GTP__PDU__SequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DL__GTP__PDU__SequenceNumber_default_coding(""); // No XER for DL__N__PDU__SequenceNumber const int DL__N__PDU__SequenceNumber_oer_ext_arr_[0] = {}; const int DL__N__PDU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t DL__N__PDU__SequenceNumber_oer_ = { 2, FALSE, -1, FALSE, 0, 0, DL__N__PDU__SequenceNumber_oer_ext_arr_, 0, DL__N__PDU__SequenceNumber_oer_p_}; static Per_Integer_Constraint DL__N__PDU__SequenceNumber_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t DL__N__PDU__SequenceNumber_per_ = { &DL__N__PDU__SequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t DL__N__PDU__SequenceNumber_descr_ = { "@RANAP-IEs.DL-N-PDU-SequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DL__N__PDU__SequenceNumber_oer_, &DL__N__PDU__SequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DL__N__PDU__SequenceNumber_default_coding(""); // No XER for D__RNTI const int D__RNTI_oer_ext_arr_[0] = {}; const int D__RNTI_oer_p_[0] = {}; const TTCN_OERdescriptor_t D__RNTI_oer_ = { 4, FALSE, -1, FALSE, 0, 0, D__RNTI_oer_ext_arr_, 0, D__RNTI_oer_p_}; static Per_Integer_Constraint D__RNTI_per_cons_(new INTEGER(0), new INTEGER(1048575), FALSE); const ASN_PERdescriptor_t D__RNTI_per_ = { &D__RNTI_per_cons_ }; const TTCN_Typedescriptor_t D__RNTI_descr_ = { "@RANAP-IEs.D-RNTI", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &D__RNTI_oer_, &D__RNTI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING D__RNTI_default_coding(""); // No XER for DRX__CycleLengthCoefficient const int DRX__CycleLengthCoefficient_oer_ext_arr_[0] = {}; const int DRX__CycleLengthCoefficient_oer_p_[0] = {}; const TTCN_OERdescriptor_t DRX__CycleLengthCoefficient_oer_ = { 1, FALSE, -1, FALSE, 0, 0, DRX__CycleLengthCoefficient_oer_ext_arr_, 0, DRX__CycleLengthCoefficient_oer_p_}; static Per_Integer_Constraint DRX__CycleLengthCoefficient_per_cons_(new INTEGER(6), new INTEGER(9), FALSE); const ASN_PERdescriptor_t DRX__CycleLengthCoefficient_per_ = { &DRX__CycleLengthCoefficient_per_cons_ }; const TTCN_Typedescriptor_t DRX__CycleLengthCoefficient_descr_ = { "@RANAP-IEs.DRX-CycleLengthCoefficient", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DRX__CycleLengthCoefficient_oer_, &DRX__CycleLengthCoefficient_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DRX__CycleLengthCoefficient_default_coding(""); // No XER for DSCH__ID const int DSCH__ID_oer_ext_arr_[0] = {}; const int DSCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t DSCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, DSCH__ID_oer_ext_arr_, 0, DSCH__ID_oer_p_}; static Per_Integer_Constraint DSCH__ID_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t DSCH__ID_per_ = { &DSCH__ID_per_cons_ }; const TTCN_Typedescriptor_t DSCH__ID_descr_ = { "@RANAP-IEs.DSCH-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &DSCH__ID_oer_, &DSCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DSCH__ID_default_coding(""); // No XER for EARFCN__Extended const int EARFCN__Extended_oer_ext_arr_[0] = {}; const int EARFCN__Extended_oer_p_[0] = {}; const TTCN_OERdescriptor_t EARFCN__Extended_oer_ = { 4, FALSE, -1, FALSE, 0, 0, EARFCN__Extended_oer_ext_arr_, 0, EARFCN__Extended_oer_p_}; static Per_Integer_Constraint EARFCN__Extended_per_cons_(new INTEGER(65536), new INTEGER(262143), TRUE); const ASN_PERdescriptor_t EARFCN__Extended_per_ = { &EARFCN__Extended_per_cons_ }; const TTCN_Typedescriptor_t EARFCN__Extended_descr_ = { "@RANAP-IEs.EARFCN-Extended", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &EARFCN__Extended_oer_, &EARFCN__Extended_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EARFCN__Extended_default_coding(""); // No XER for E__DCH__MAC__d__Flow__ID const int E__DCH__MAC__d__Flow__ID_oer_ext_arr_[0] = {}; const int E__DCH__MAC__d__Flow__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t E__DCH__MAC__d__Flow__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, E__DCH__MAC__d__Flow__ID_oer_ext_arr_, 0, E__DCH__MAC__d__Flow__ID_oer_p_}; static Per_Integer_Constraint E__DCH__MAC__d__Flow__ID_per_cons_(new INTEGER(0), new INTEGER(7), FALSE); const ASN_PERdescriptor_t E__DCH__MAC__d__Flow__ID_per_ = { &E__DCH__MAC__d__Flow__ID_per_cons_ }; const TTCN_Typedescriptor_t E__DCH__MAC__d__Flow__ID_descr_ = { "@RANAP-IEs.E-DCH-MAC-d-Flow-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &E__DCH__MAC__d__Flow__ID_oer_, &E__DCH__MAC__d__Flow__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING E__DCH__MAC__d__Flow__ID_default_coding(""); // No XER for ENB__ID const TTCN_JSONdescriptor_t ENB__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ENB__ID_oer_ext_arr_[0] = {}; const int ENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__ID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ENB__ID_oer_ext_arr_, 0, ENB__ID_oer_p_}; static const Per_Constraint ENB__ID_per_cons_; const ASN_PERdescriptor_t ENB__ID_per_ = { &ENB__ID_per_cons_ }; const TTCN_Typedescriptor_t ENB__ID_descr_ = { "@RANAP-IEs.ENB-ID", &CHOICE_ber_, NULL, NULL, NULL, &ENB__ID_json_, &ENB__ID_oer_, &ENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t ENB__ID_macroENB__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t ENB__ID_macroENB__ID_ber_ = { 1u, ENB__ID_macroENB__ID_tag_ }; // No XER for ENB__ID_macroENB__ID const int ENB__ID_macroENB__ID_oer_ext_arr_[0] = {}; const int ENB__ID_macroENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__ID_macroENB__ID_oer_ = { -1, TRUE, 20, FALSE, 0, 0, ENB__ID_macroENB__ID_oer_ext_arr_, 0, ENB__ID_macroENB__ID_oer_p_}; static Per_Integer_Constraint ENB__ID_macroENB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(20), FALSE); static Per_BitString_Constraint ENB__ID_macroENB__ID_per_cons_(FALSE, &ENB__ID_macroENB__ID_size_per_cons_); const ASN_PERdescriptor_t ENB__ID_macroENB__ID_per_ = { &ENB__ID_macroENB__ID_per_cons_ }; const TTCN_Typedescriptor_t ENB__ID_macroENB__ID_descr_ = { "@RANAP-IEs.ENB-ID.macroENB-ID", &ENB__ID_macroENB__ID_ber_, NULL, NULL, NULL, &BITSTRING_json_, &ENB__ID_macroENB__ID_oer_, &ENB__ID_macroENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__ID_macroENB__ID_default_coding(""); const ASN_Tag_t ENB__ID_homeENB__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t ENB__ID_homeENB__ID_ber_ = { 1u, ENB__ID_homeENB__ID_tag_ }; // No XER for ENB__ID_homeENB__ID const int ENB__ID_homeENB__ID_oer_ext_arr_[0] = {}; const int ENB__ID_homeENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__ID_homeENB__ID_oer_ = { -1, TRUE, 28, FALSE, 0, 0, ENB__ID_homeENB__ID_oer_ext_arr_, 0, ENB__ID_homeENB__ID_oer_p_}; static Per_Integer_Constraint ENB__ID_homeENB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(28), FALSE); static Per_BitString_Constraint ENB__ID_homeENB__ID_per_cons_(FALSE, &ENB__ID_homeENB__ID_size_per_cons_); const ASN_PERdescriptor_t ENB__ID_homeENB__ID_per_ = { &ENB__ID_homeENB__ID_per_cons_ }; const TTCN_Typedescriptor_t ENB__ID_homeENB__ID_descr_ = { "@RANAP-IEs.ENB-ID.homeENB-ID", &ENB__ID_homeENB__ID_ber_, NULL, NULL, NULL, &BITSTRING_json_, &ENB__ID_homeENB__ID_oer_, &ENB__ID_homeENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__ID_homeENB__ID_default_coding(""); const ASN_Tag_t ENB__ID_short__macroENB__ID_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t ENB__ID_short__macroENB__ID_ber_ = { 1u, ENB__ID_short__macroENB__ID_tag_ }; // No XER for ENB__ID_short__macroENB__ID const int ENB__ID_short__macroENB__ID_oer_ext_arr_[0] = {}; const int ENB__ID_short__macroENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__ID_short__macroENB__ID_oer_ = { -1, TRUE, 18, FALSE, 0, 0, ENB__ID_short__macroENB__ID_oer_ext_arr_, 0, ENB__ID_short__macroENB__ID_oer_p_}; static Per_Integer_Constraint ENB__ID_short__macroENB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(18), FALSE); static Per_BitString_Constraint ENB__ID_short__macroENB__ID_per_cons_(FALSE, &ENB__ID_short__macroENB__ID_size_per_cons_); const ASN_PERdescriptor_t ENB__ID_short__macroENB__ID_per_ = { &ENB__ID_short__macroENB__ID_per_cons_ }; const TTCN_Typedescriptor_t ENB__ID_short__macroENB__ID_descr_ = { "@RANAP-IEs.ENB-ID.short-macroENB-ID", &ENB__ID_short__macroENB__ID_ber_, NULL, NULL, NULL, &BITSTRING_json_, &ENB__ID_short__macroENB__ID_oer_, &ENB__ID_short__macroENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__ID_short__macroENB__ID_default_coding(""); const ASN_Tag_t ENB__ID_long__macroENB__ID_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t ENB__ID_long__macroENB__ID_ber_ = { 1u, ENB__ID_long__macroENB__ID_tag_ }; // No XER for ENB__ID_long__macroENB__ID const int ENB__ID_long__macroENB__ID_oer_ext_arr_[0] = {}; const int ENB__ID_long__macroENB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ENB__ID_long__macroENB__ID_oer_ = { -1, TRUE, 21, FALSE, 0, 0, ENB__ID_long__macroENB__ID_oer_ext_arr_, 0, ENB__ID_long__macroENB__ID_oer_p_}; static Per_Integer_Constraint ENB__ID_long__macroENB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(21), FALSE); static Per_BitString_Constraint ENB__ID_long__macroENB__ID_per_cons_(FALSE, &ENB__ID_long__macroENB__ID_size_per_cons_); const ASN_PERdescriptor_t ENB__ID_long__macroENB__ID_per_ = { &ENB__ID_long__macroENB__ID_per_cons_ }; const TTCN_Typedescriptor_t ENB__ID_long__macroENB__ID_descr_ = { "@RANAP-IEs.ENB-ID.long-macroENB-ID", &ENB__ID_long__macroENB__ID_ber_, NULL, NULL, NULL, &BITSTRING_json_, &ENB__ID_long__macroENB__ID_oer_, &ENB__ID_long__macroENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ENB__ID_long__macroENB__ID_default_coding(""); UNIVERSAL_CHARSTRING ENB__ID_default_coding(""); // No XER for PermittedEncryptionAlgorithms const TTCN_JSONdescriptor_t PermittedEncryptionAlgorithms_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PermittedEncryptionAlgorithms_oer_ext_arr_[0] = {}; const int PermittedEncryptionAlgorithms_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermittedEncryptionAlgorithms_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PermittedEncryptionAlgorithms_oer_ext_arr_, 0, PermittedEncryptionAlgorithms_oer_p_}; static Per_Integer_Constraint PermittedEncryptionAlgorithms_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t PermittedEncryptionAlgorithms_per_ = { &PermittedEncryptionAlgorithms_per_cons_ }; const TTCN_Typedescriptor_t PermittedEncryptionAlgorithms_descr_ = { "@RANAP-IEs.PermittedEncryptionAlgorithms", &SEQUENCE_ber_, NULL, NULL, NULL, &PermittedEncryptionAlgorithms_json_, &PermittedEncryptionAlgorithms_oer_, &PermittedEncryptionAlgorithms_per_, &PermittedEncryptionAlgorithms_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PermittedEncryptionAlgorithms_0 const int PermittedEncryptionAlgorithms_0_oer_ext_arr_[0] = {}; const int PermittedEncryptionAlgorithms_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermittedEncryptionAlgorithms_0_oer_ = { 1, FALSE, -1, FALSE, 0, 0, PermittedEncryptionAlgorithms_0_oer_ext_arr_, 0, PermittedEncryptionAlgorithms_0_oer_p_}; const TTCN_Typedescriptor_t PermittedEncryptionAlgorithms_0_descr_ = { "@RANAP-IEs.PermittedEncryptionAlgorithms.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &PermittedEncryptionAlgorithms_0_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PermittedEncryptionAlgorithms_0_default_coding(""); UNIVERSAL_CHARSTRING PermittedEncryptionAlgorithms_default_coding(""); const ASN_Tag_t EncryptionInformation_permittedAlgorithms_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t EncryptionInformation_permittedAlgorithms_ber_ = { 1u, EncryptionInformation_permittedAlgorithms_tag_ }; // No XER for EncryptionInformation_permittedAlgorithms const int EncryptionInformation_permittedAlgorithms_oer_ext_arr_[0] = {}; const int EncryptionInformation_permittedAlgorithms_oer_p_[0] = {}; const TTCN_OERdescriptor_t EncryptionInformation_permittedAlgorithms_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EncryptionInformation_permittedAlgorithms_oer_ext_arr_, 0, EncryptionInformation_permittedAlgorithms_oer_p_}; const TTCN_Typedescriptor_t EncryptionInformation_permittedAlgorithms_descr_ = { "@RANAP-IEs.EncryptionInformation.permittedAlgorithms", &EncryptionInformation_permittedAlgorithms_ber_, NULL, NULL, NULL, &PermittedEncryptionAlgorithms_json_, &EncryptionInformation_permittedAlgorithms_oer_, &PermittedEncryptionAlgorithms_per_, &PermittedEncryptionAlgorithms_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EncryptionInformation_permittedAlgorithms_default_coding(""); // No XER for EncryptionKey const int EncryptionKey_oer_ext_arr_[0] = {}; const int EncryptionKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t EncryptionKey_oer_ = { -1, TRUE, 128, FALSE, 0, 0, EncryptionKey_oer_ext_arr_, 0, EncryptionKey_oer_p_}; static Per_Integer_Constraint EncryptionKey_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(128), FALSE); static Per_BitString_Constraint EncryptionKey_per_cons_(FALSE, &EncryptionKey_size_per_cons_); const ASN_PERdescriptor_t EncryptionKey_per_ = { &EncryptionKey_per_cons_ }; const TTCN_Typedescriptor_t EncryptionKey_descr_ = { "@RANAP-IEs.EncryptionKey", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &EncryptionKey_oer_, &EncryptionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EncryptionKey_default_coding(""); const ASN_Tag_t EncryptionInformation_key_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t EncryptionInformation_key_ber_ = { 1u, EncryptionInformation_key_tag_ }; // No XER for EncryptionInformation_key const int EncryptionInformation_key_oer_ext_arr_[0] = {}; const int EncryptionInformation_key_oer_p_[0] = {}; const TTCN_OERdescriptor_t EncryptionInformation_key_oer_ = { -1, TRUE, 128, FALSE, 0, 0, EncryptionInformation_key_oer_ext_arr_, 0, EncryptionInformation_key_oer_p_}; const TTCN_Typedescriptor_t EncryptionInformation_key_descr_ = { "@RANAP-IEs.EncryptionInformation.key", &EncryptionInformation_key_ber_, NULL, NULL, NULL, &BITSTRING_json_, &EncryptionInformation_key_oer_, &EncryptionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EncryptionInformation_key_default_coding(""); // No XER for EncryptionInformation const TTCN_JSONdescriptor_t EncryptionInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int EncryptionInformation_oer_ext_arr_[0] = {}; const int EncryptionInformation_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t EncryptionInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EncryptionInformation_oer_ext_arr_, 3, EncryptionInformation_oer_p_}; static const Per_Constraint EncryptionInformation_per_cons_; const ASN_PERdescriptor_t EncryptionInformation_per_ = { &EncryptionInformation_per_cons_ }; const TTCN_Typedescriptor_t EncryptionInformation_descr_ = { "@RANAP-IEs.EncryptionInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &EncryptionInformation_json_, &EncryptionInformation_oer_, &EncryptionInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst38", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst38.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst38.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst38.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst38.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst38", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst38.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst38_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_default_coding(""); const ASN_Tag_t EncryptionInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t EncryptionInformation_iE__Extensions_ber_ = { 1u, EncryptionInformation_iE__Extensions_tag_ }; // No XER for EncryptionInformation_iE__Extensions const int EncryptionInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int EncryptionInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t EncryptionInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EncryptionInformation_iE__Extensions_oer_ext_arr_, 0, EncryptionInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t EncryptionInformation_iE__Extensions_descr_ = { "@RANAP-IEs.EncryptionInformation.iE-Extensions", &EncryptionInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_json_, &EncryptionInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst38_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EncryptionInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING EncryptionInformation_default_coding(""); // No XER for End__Of__CSFB const TTCN_JSONdescriptor_t End__Of__CSFB_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int End__Of__CSFB_oer_ext_arr_[0] = {}; const int End__Of__CSFB_oer_p_[0] = {}; const TTCN_OERdescriptor_t End__Of__CSFB_oer_ = { -1, TRUE, -1, FALSE, 0, 0, End__Of__CSFB_oer_ext_arr_, 0, End__Of__CSFB_oer_p_}; static const Per_Constraint End__Of__CSFB_per_cons_; const ASN_PERdescriptor_t End__Of__CSFB_per_ = { &End__Of__CSFB_per_cons_ }; const TTCN_Typedescriptor_t End__Of__CSFB_descr_ = { "@RANAP-IEs.End-Of-CSFB", &ENUMERATED_ber_, NULL, NULL, NULL, &End__Of__CSFB_json_, &End__Of__CSFB_oer_, &End__Of__CSFB_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING End__Of__CSFB_default_coding(""); // No XER for EquipmentsToBeTraced const TTCN_JSONdescriptor_t EquipmentsToBeTraced_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int EquipmentsToBeTraced_oer_ext_arr_[0] = {}; const int EquipmentsToBeTraced_oer_p_[0] = {}; const TTCN_OERdescriptor_t EquipmentsToBeTraced_oer_ = { -1, TRUE, -1, TRUE, 4, 0, EquipmentsToBeTraced_oer_ext_arr_, 0, EquipmentsToBeTraced_oer_p_}; static const Per_Constraint EquipmentsToBeTraced_per_cons_; const ASN_PERdescriptor_t EquipmentsToBeTraced_per_ = { &EquipmentsToBeTraced_per_cons_ }; const TTCN_Typedescriptor_t EquipmentsToBeTraced_descr_ = { "@RANAP-IEs.EquipmentsToBeTraced", &CHOICE_ber_, NULL, NULL, NULL, &EquipmentsToBeTraced_json_, &EquipmentsToBeTraced_oer_, &EquipmentsToBeTraced_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for IMEIList const TTCN_JSONdescriptor_t IMEIList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IMEIList_oer_ext_arr_[0] = {}; const int IMEIList_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEIList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEIList_oer_ext_arr_, 0, IMEIList_oer_p_}; static Per_Integer_Constraint IMEIList_per_cons_(new INTEGER(1), new INTEGER(64), FALSE); const ASN_PERdescriptor_t IMEIList_per_ = { &IMEIList_per_cons_ }; const TTCN_Typedescriptor_t IMEIList_descr_ = { "@RANAP-IEs.IMEIList", &SEQUENCE_ber_, NULL, NULL, NULL, &IMEIList_json_, &IMEIList_oer_, &IMEIList_per_, &IMEIList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for IMEI const int IMEI_oer_ext_arr_[0] = {}; const int IMEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEI_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEI_oer_ext_arr_, 0, IMEI_oer_p_}; static Per_Integer_Constraint IMEI_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); const ASN_PERdescriptor_t IMEI_per_ = { &IMEI_per_cons_ }; const TTCN_Typedescriptor_t IMEI_descr_ = { "@RANAP-IEs.IMEI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEI_oer_, &IMEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEI_default_coding(""); // No XER for IMEIList_0 const int IMEIList_0_oer_ext_arr_[0] = {}; const int IMEIList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEIList_0_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEIList_0_oer_ext_arr_, 0, IMEIList_0_oer_p_}; const TTCN_Typedescriptor_t IMEIList_0_descr_ = { "@RANAP-IEs.IMEIList.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEIList_0_oer_, &IMEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEIList_0_default_coding(""); UNIVERSAL_CHARSTRING IMEIList_default_coding(""); const ASN_Tag_t EquipmentsToBeTraced_iMEIlist_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t EquipmentsToBeTraced_iMEIlist_ber_ = { 1u, EquipmentsToBeTraced_iMEIlist_tag_ }; // No XER for EquipmentsToBeTraced_iMEIlist const int EquipmentsToBeTraced_iMEIlist_oer_ext_arr_[0] = {}; const int EquipmentsToBeTraced_iMEIlist_oer_p_[0] = {}; const TTCN_OERdescriptor_t EquipmentsToBeTraced_iMEIlist_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EquipmentsToBeTraced_iMEIlist_oer_ext_arr_, 0, EquipmentsToBeTraced_iMEIlist_oer_p_}; const TTCN_Typedescriptor_t EquipmentsToBeTraced_iMEIlist_descr_ = { "@RANAP-IEs.EquipmentsToBeTraced.iMEIlist", &EquipmentsToBeTraced_iMEIlist_ber_, NULL, NULL, NULL, &IMEIList_json_, &EquipmentsToBeTraced_iMEIlist_oer_, &IMEIList_per_, &IMEIList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EquipmentsToBeTraced_iMEIlist_default_coding(""); // No XER for IMEISVList const TTCN_JSONdescriptor_t IMEISVList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IMEISVList_oer_ext_arr_[0] = {}; const int IMEISVList_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISVList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEISVList_oer_ext_arr_, 0, IMEISVList_oer_p_}; static Per_Integer_Constraint IMEISVList_per_cons_(new INTEGER(1), new INTEGER(64), FALSE); const ASN_PERdescriptor_t IMEISVList_per_ = { &IMEISVList_per_cons_ }; const TTCN_Typedescriptor_t IMEISVList_descr_ = { "@RANAP-IEs.IMEISVList", &SEQUENCE_ber_, NULL, NULL, NULL, &IMEISVList_json_, &IMEISVList_oer_, &IMEISVList_per_, &IMEISVList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for IMEISV const int IMEISV_oer_ext_arr_[0] = {}; const int IMEISV_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISV_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEISV_oer_ext_arr_, 0, IMEISV_oer_p_}; static Per_Integer_Constraint IMEISV_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); const ASN_PERdescriptor_t IMEISV_per_ = { &IMEISV_per_cons_ }; const TTCN_Typedescriptor_t IMEISV_descr_ = { "@RANAP-IEs.IMEISV", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEISV_oer_, &IMEISV_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISV_default_coding(""); // No XER for IMEISVList_0 const int IMEISVList_0_oer_ext_arr_[0] = {}; const int IMEISVList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISVList_0_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEISVList_0_oer_ext_arr_, 0, IMEISVList_0_oer_p_}; const TTCN_Typedescriptor_t IMEISVList_0_descr_ = { "@RANAP-IEs.IMEISVList.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEISVList_0_oer_, &IMEISV_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISVList_0_default_coding(""); UNIVERSAL_CHARSTRING IMEISVList_default_coding(""); const ASN_Tag_t EquipmentsToBeTraced_iMEISVlist_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t EquipmentsToBeTraced_iMEISVlist_ber_ = { 1u, EquipmentsToBeTraced_iMEISVlist_tag_ }; // No XER for EquipmentsToBeTraced_iMEISVlist const int EquipmentsToBeTraced_iMEISVlist_oer_ext_arr_[0] = {}; const int EquipmentsToBeTraced_iMEISVlist_oer_p_[0] = {}; const TTCN_OERdescriptor_t EquipmentsToBeTraced_iMEISVlist_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EquipmentsToBeTraced_iMEISVlist_oer_ext_arr_, 0, EquipmentsToBeTraced_iMEISVlist_oer_p_}; const TTCN_Typedescriptor_t EquipmentsToBeTraced_iMEISVlist_descr_ = { "@RANAP-IEs.EquipmentsToBeTraced.iMEISVlist", &EquipmentsToBeTraced_iMEISVlist_ber_, NULL, NULL, NULL, &IMEISVList_json_, &EquipmentsToBeTraced_iMEISVlist_oer_, &IMEISVList_per_, &IMEISVList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EquipmentsToBeTraced_iMEISVlist_default_coding(""); const ASN_Tag_t IMEIGroup_iMEI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IMEIGroup_iMEI_ber_ = { 1u, IMEIGroup_iMEI_tag_ }; // No XER for IMEIGroup_iMEI const int IMEIGroup_iMEI_oer_ext_arr_[0] = {}; const int IMEIGroup_iMEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEIGroup_iMEI_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEIGroup_iMEI_oer_ext_arr_, 0, IMEIGroup_iMEI_oer_p_}; const TTCN_Typedescriptor_t IMEIGroup_iMEI_descr_ = { "@RANAP-IEs.IMEIGroup.iMEI", &IMEIGroup_iMEI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEIGroup_iMEI_oer_, &IMEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEIGroup_iMEI_default_coding(""); const ASN_Tag_t IMEIGroup_iMEIMask_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IMEIGroup_iMEIMask_ber_ = { 1u, IMEIGroup_iMEIMask_tag_ }; // No XER for IMEIGroup_iMEIMask const int IMEIGroup_iMEIMask_oer_ext_arr_[0] = {}; const int IMEIGroup_iMEIMask_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEIGroup_iMEIMask_oer_ = { -1, TRUE, 7, FALSE, 0, 0, IMEIGroup_iMEIMask_oer_ext_arr_, 0, IMEIGroup_iMEIMask_oer_p_}; static Per_Integer_Constraint IMEIGroup_iMEIMask_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(7), FALSE); static Per_BitString_Constraint IMEIGroup_iMEIMask_per_cons_(FALSE, &IMEIGroup_iMEIMask_size_per_cons_); const ASN_PERdescriptor_t IMEIGroup_iMEIMask_per_ = { &IMEIGroup_iMEIMask_per_cons_ }; const TTCN_Typedescriptor_t IMEIGroup_iMEIMask_descr_ = { "@RANAP-IEs.IMEIGroup.iMEIMask", &IMEIGroup_iMEIMask_ber_, NULL, NULL, NULL, &BITSTRING_json_, &IMEIGroup_iMEIMask_oer_, &IMEIGroup_iMEIMask_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEIGroup_iMEIMask_default_coding(""); // No XER for IMEIGroup const TTCN_JSONdescriptor_t IMEIGroup_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IMEIGroup_oer_ext_arr_[0] = {}; const int IMEIGroup_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t IMEIGroup_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEIGroup_oer_ext_arr_, 3, IMEIGroup_oer_p_}; static const Per_Constraint IMEIGroup_per_cons_; const ASN_PERdescriptor_t IMEIGroup_per_ = { &IMEIGroup_per_cons_ }; const TTCN_Typedescriptor_t IMEIGroup_descr_ = { "@RANAP-IEs.IMEIGroup", &SEQUENCE_ber_, NULL, NULL, NULL, &IMEIGroup_json_, &IMEIGroup_oer_, &IMEIGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst39", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst39.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst39.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst39.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst39.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst39", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst39.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst39_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_default_coding(""); const ASN_Tag_t IMEIGroup_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t IMEIGroup_iE__Extensions_ber_ = { 1u, IMEIGroup_iE__Extensions_tag_ }; // No XER for IMEIGroup_iE__Extensions const int IMEIGroup_iE__Extensions_oer_ext_arr_[0] = {}; const int IMEIGroup_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEIGroup_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEIGroup_iE__Extensions_oer_ext_arr_, 0, IMEIGroup_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t IMEIGroup_iE__Extensions_descr_ = { "@RANAP-IEs.IMEIGroup.iE-Extensions", &IMEIGroup_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_json_, &IMEIGroup_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst39_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEIGroup_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING IMEIGroup_default_coding(""); const ASN_Tag_t EquipmentsToBeTraced_iMEIgroup_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t EquipmentsToBeTraced_iMEIgroup_ber_ = { 1u, EquipmentsToBeTraced_iMEIgroup_tag_ }; // No XER for EquipmentsToBeTraced_iMEIgroup const int EquipmentsToBeTraced_iMEIgroup_oer_ext_arr_[0] = {}; const int EquipmentsToBeTraced_iMEIgroup_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t EquipmentsToBeTraced_iMEIgroup_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EquipmentsToBeTraced_iMEIgroup_oer_ext_arr_, 3, EquipmentsToBeTraced_iMEIgroup_oer_p_}; const TTCN_Typedescriptor_t EquipmentsToBeTraced_iMEIgroup_descr_ = { "@RANAP-IEs.EquipmentsToBeTraced.iMEIgroup", &EquipmentsToBeTraced_iMEIgroup_ber_, NULL, NULL, NULL, &IMEIGroup_json_, &EquipmentsToBeTraced_iMEIgroup_oer_, &IMEIGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EquipmentsToBeTraced_iMEIgroup_default_coding(""); const ASN_Tag_t IMEISVGroup_iMEISV_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IMEISVGroup_iMEISV_ber_ = { 1u, IMEISVGroup_iMEISV_tag_ }; // No XER for IMEISVGroup_iMEISV const int IMEISVGroup_iMEISV_oer_ext_arr_[0] = {}; const int IMEISVGroup_iMEISV_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISVGroup_iMEISV_oer_ = { -1, TRUE, 8, FALSE, 0, 0, IMEISVGroup_iMEISV_oer_ext_arr_, 0, IMEISVGroup_iMEISV_oer_p_}; const TTCN_Typedescriptor_t IMEISVGroup_iMEISV_descr_ = { "@RANAP-IEs.IMEISVGroup.iMEISV", &IMEISVGroup_iMEISV_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMEISVGroup_iMEISV_oer_, &IMEISV_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISVGroup_iMEISV_default_coding(""); const ASN_Tag_t IMEISVGroup_iMEISVMask_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IMEISVGroup_iMEISVMask_ber_ = { 1u, IMEISVGroup_iMEISVMask_tag_ }; // No XER for IMEISVGroup_iMEISVMask const int IMEISVGroup_iMEISVMask_oer_ext_arr_[0] = {}; const int IMEISVGroup_iMEISVMask_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISVGroup_iMEISVMask_oer_ = { -1, TRUE, 7, FALSE, 0, 0, IMEISVGroup_iMEISVMask_oer_ext_arr_, 0, IMEISVGroup_iMEISVMask_oer_p_}; static Per_Integer_Constraint IMEISVGroup_iMEISVMask_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(7), FALSE); static Per_BitString_Constraint IMEISVGroup_iMEISVMask_per_cons_(FALSE, &IMEISVGroup_iMEISVMask_size_per_cons_); const ASN_PERdescriptor_t IMEISVGroup_iMEISVMask_per_ = { &IMEISVGroup_iMEISVMask_per_cons_ }; const TTCN_Typedescriptor_t IMEISVGroup_iMEISVMask_descr_ = { "@RANAP-IEs.IMEISVGroup.iMEISVMask", &IMEISVGroup_iMEISVMask_ber_, NULL, NULL, NULL, &BITSTRING_json_, &IMEISVGroup_iMEISVMask_oer_, &IMEISVGroup_iMEISVMask_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISVGroup_iMEISVMask_default_coding(""); // No XER for IMEISVGroup const TTCN_JSONdescriptor_t IMEISVGroup_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IMEISVGroup_oer_ext_arr_[0] = {}; const int IMEISVGroup_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t IMEISVGroup_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEISVGroup_oer_ext_arr_, 3, IMEISVGroup_oer_p_}; static const Per_Constraint IMEISVGroup_per_cons_; const ASN_PERdescriptor_t IMEISVGroup_per_ = { &IMEISVGroup_per_cons_ }; const TTCN_Typedescriptor_t IMEISVGroup_descr_ = { "@RANAP-IEs.IMEISVGroup", &SEQUENCE_ber_, NULL, NULL, NULL, &IMEISVGroup_json_, &IMEISVGroup_oer_, &IMEISVGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst40", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst40.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst40.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst40.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst40.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst40", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst40.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst40_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_default_coding(""); const ASN_Tag_t IMEISVGroup_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t IMEISVGroup_iE__Extensions_ber_ = { 1u, IMEISVGroup_iE__Extensions_tag_ }; // No XER for IMEISVGroup_iE__Extensions const int IMEISVGroup_iE__Extensions_oer_ext_arr_[0] = {}; const int IMEISVGroup_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMEISVGroup_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMEISVGroup_iE__Extensions_oer_ext_arr_, 0, IMEISVGroup_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t IMEISVGroup_iE__Extensions_descr_ = { "@RANAP-IEs.IMEISVGroup.iE-Extensions", &IMEISVGroup_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_json_, &IMEISVGroup_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst40_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMEISVGroup_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING IMEISVGroup_default_coding(""); const ASN_Tag_t EquipmentsToBeTraced_iMEISVgroup_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t EquipmentsToBeTraced_iMEISVgroup_ber_ = { 1u, EquipmentsToBeTraced_iMEISVgroup_tag_ }; // No XER for EquipmentsToBeTraced_iMEISVgroup const int EquipmentsToBeTraced_iMEISVgroup_oer_ext_arr_[0] = {}; const int EquipmentsToBeTraced_iMEISVgroup_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t EquipmentsToBeTraced_iMEISVgroup_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EquipmentsToBeTraced_iMEISVgroup_oer_ext_arr_, 3, EquipmentsToBeTraced_iMEISVgroup_oer_p_}; const TTCN_Typedescriptor_t EquipmentsToBeTraced_iMEISVgroup_descr_ = { "@RANAP-IEs.EquipmentsToBeTraced.iMEISVgroup", &EquipmentsToBeTraced_iMEISVgroup_ber_, NULL, NULL, NULL, &IMEISVGroup_json_, &EquipmentsToBeTraced_iMEISVgroup_oer_, &IMEISVGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EquipmentsToBeTraced_iMEISVgroup_default_coding(""); UNIVERSAL_CHARSTRING EquipmentsToBeTraced_default_coding(""); // No XER for E__UTRAN__Service__Handover const TTCN_JSONdescriptor_t E__UTRAN__Service__Handover_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int E__UTRAN__Service__Handover_oer_ext_arr_[0] = {}; const int E__UTRAN__Service__Handover_oer_p_[0] = {}; const TTCN_OERdescriptor_t E__UTRAN__Service__Handover_oer_ = { -1, TRUE, -1, FALSE, 0, 0, E__UTRAN__Service__Handover_oer_ext_arr_, 0, E__UTRAN__Service__Handover_oer_p_}; static const Per_Constraint E__UTRAN__Service__Handover_per_cons_; const ASN_PERdescriptor_t E__UTRAN__Service__Handover_per_ = { &E__UTRAN__Service__Handover_per_cons_ }; const TTCN_Typedescriptor_t E__UTRAN__Service__Handover_descr_ = { "@RANAP-IEs.E-UTRAN-Service-Handover", &ENUMERATED_ber_, NULL, NULL, NULL, &E__UTRAN__Service__Handover_json_, &E__UTRAN__Service__Handover_oer_, &E__UTRAN__Service__Handover_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING E__UTRAN__Service__Handover_default_coding(""); // No XER for Event const TTCN_JSONdescriptor_t Event_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Event_oer_ext_arr_[0] = {}; const int Event_oer_p_[0] = {}; const TTCN_OERdescriptor_t Event_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Event_oer_ext_arr_, 0, Event_oer_p_}; static const Per_Constraint Event_per_cons_; const ASN_PERdescriptor_t Event_per_ = { &Event_per_cons_ }; const TTCN_Typedescriptor_t Event_descr_ = { "@RANAP-IEs.Event", &ENUMERATED_ber_, NULL, NULL, NULL, &Event_json_, &Event_oer_, &Event_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event_default_coding(""); // No XER for MeasurementQuantity const TTCN_JSONdescriptor_t MeasurementQuantity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MeasurementQuantity_oer_ext_arr_[0] = {}; const int MeasurementQuantity_oer_p_[0] = {}; const TTCN_OERdescriptor_t MeasurementQuantity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MeasurementQuantity_oer_ext_arr_, 0, MeasurementQuantity_oer_p_}; static const Per_Constraint MeasurementQuantity_per_cons_; const ASN_PERdescriptor_t MeasurementQuantity_per_ = { &MeasurementQuantity_per_cons_ }; const TTCN_Typedescriptor_t MeasurementQuantity_descr_ = { "@RANAP-IEs.MeasurementQuantity", &ENUMERATED_ber_, NULL, NULL, NULL, &MeasurementQuantity_json_, &MeasurementQuantity_oer_, &MeasurementQuantity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MeasurementQuantity_default_coding(""); const ASN_Tag_t Event1F__Parameters_measurementQuantity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Event1F__Parameters_measurementQuantity_ber_ = { 1u, Event1F__Parameters_measurementQuantity_tag_ }; // No XER for Event1F__Parameters_measurementQuantity const int Event1F__Parameters_measurementQuantity_oer_ext_arr_[0] = {}; const int Event1F__Parameters_measurementQuantity_oer_p_[0] = {}; const TTCN_OERdescriptor_t Event1F__Parameters_measurementQuantity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Event1F__Parameters_measurementQuantity_oer_ext_arr_, 0, Event1F__Parameters_measurementQuantity_oer_p_}; const TTCN_Typedescriptor_t Event1F__Parameters_measurementQuantity_descr_ = { "@RANAP-IEs.Event1F-Parameters.measurementQuantity", &Event1F__Parameters_measurementQuantity_ber_, NULL, NULL, NULL, &MeasurementQuantity_json_, &Event1F__Parameters_measurementQuantity_oer_, &MeasurementQuantity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event1F__Parameters_measurementQuantity_default_coding(""); const ASN_Tag_t Event1F__Parameters_threshold_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Event1F__Parameters_threshold_ber_ = { 1u, Event1F__Parameters_threshold_tag_ }; // No XER for Event1F__Parameters_threshold const int Event1F__Parameters_threshold_oer_ext_arr_[0] = {}; const int Event1F__Parameters_threshold_oer_p_[0] = {}; const TTCN_OERdescriptor_t Event1F__Parameters_threshold_oer_ = { 2, TRUE, -1, FALSE, 0, 0, Event1F__Parameters_threshold_oer_ext_arr_, 0, Event1F__Parameters_threshold_oer_p_}; static Per_Integer_Constraint Event1F__Parameters_threshold_per_cons_(new INTEGER(-120), new INTEGER(165), FALSE); const ASN_PERdescriptor_t Event1F__Parameters_threshold_per_ = { &Event1F__Parameters_threshold_per_cons_ }; const TTCN_Typedescriptor_t Event1F__Parameters_threshold_descr_ = { "@RANAP-IEs.Event1F-Parameters.threshold", &Event1F__Parameters_threshold_ber_, NULL, NULL, NULL, &INTEGER_json_, &Event1F__Parameters_threshold_oer_, &Event1F__Parameters_threshold_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event1F__Parameters_threshold_default_coding(""); // No XER for Event1F__Parameters const TTCN_JSONdescriptor_t Event1F__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Event1F__Parameters_oer_ext_arr_[0] = {}; const int Event1F__Parameters_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Event1F__Parameters_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Event1F__Parameters_oer_ext_arr_, 2, Event1F__Parameters_oer_p_}; static const Per_Constraint Event1F__Parameters_per_cons_; const ASN_PERdescriptor_t Event1F__Parameters_per_ = { &Event1F__Parameters_per_cons_ }; const TTCN_Typedescriptor_t Event1F__Parameters_descr_ = { "@RANAP-IEs.Event1F-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &Event1F__Parameters_json_, &Event1F__Parameters_oer_, &Event1F__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event1F__Parameters_default_coding(""); const ASN_Tag_t Event1I__Parameters_threshold_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Event1I__Parameters_threshold_ber_ = { 1u, Event1I__Parameters_threshold_tag_ }; // No XER for Event1I__Parameters_threshold const int Event1I__Parameters_threshold_oer_ext_arr_[0] = {}; const int Event1I__Parameters_threshold_oer_p_[0] = {}; const TTCN_OERdescriptor_t Event1I__Parameters_threshold_oer_ = { 1, TRUE, -1, FALSE, 0, 0, Event1I__Parameters_threshold_oer_ext_arr_, 0, Event1I__Parameters_threshold_oer_p_}; static Per_Integer_Constraint Event1I__Parameters_threshold_per_cons_(new INTEGER(-120), new INTEGER(-25), FALSE); const ASN_PERdescriptor_t Event1I__Parameters_threshold_per_ = { &Event1I__Parameters_threshold_per_cons_ }; const TTCN_Typedescriptor_t Event1I__Parameters_threshold_descr_ = { "@RANAP-IEs.Event1I-Parameters.threshold", &Event1I__Parameters_threshold_ber_, NULL, NULL, NULL, &INTEGER_json_, &Event1I__Parameters_threshold_oer_, &Event1I__Parameters_threshold_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event1I__Parameters_threshold_default_coding(""); // No XER for Event1I__Parameters const TTCN_JSONdescriptor_t Event1I__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Event1I__Parameters_oer_ext_arr_[0] = {}; const int Event1I__Parameters_oer_p_[1] = {0}; const TTCN_OERdescriptor_t Event1I__Parameters_oer_ = { -1, TRUE, -1, TRUE, 1, 0, Event1I__Parameters_oer_ext_arr_, 1, Event1I__Parameters_oer_p_}; static const Per_Constraint Event1I__Parameters_per_cons_; const ASN_PERdescriptor_t Event1I__Parameters_per_ = { &Event1I__Parameters_per_cons_ }; const TTCN_Typedescriptor_t Event1I__Parameters_descr_ = { "@RANAP-IEs.Event1I-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &Event1I__Parameters_json_, &Event1I__Parameters_oer_, &Event1I__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Event1I__Parameters_default_coding(""); // No XER for ExtendedRNC__ID const int ExtendedRNC__ID_oer_ext_arr_[0] = {}; const int ExtendedRNC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t ExtendedRNC__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, ExtendedRNC__ID_oer_ext_arr_, 0, ExtendedRNC__ID_oer_p_}; static Per_Integer_Constraint ExtendedRNC__ID_per_cons_(new INTEGER(4096), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t ExtendedRNC__ID_per_ = { &ExtendedRNC__ID_per_cons_ }; const TTCN_Typedescriptor_t ExtendedRNC__ID_descr_ = { "@RANAP-IEs.ExtendedRNC-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ExtendedRNC__ID_oer_, &ExtendedRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ExtendedRNC__ID_default_coding(""); // No XER for FrameSequenceNumber const int FrameSequenceNumber_oer_ext_arr_[0] = {}; const int FrameSequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t FrameSequenceNumber_oer_ = { 1, FALSE, -1, FALSE, 0, 0, FrameSequenceNumber_oer_ext_arr_, 0, FrameSequenceNumber_oer_p_}; static Per_Integer_Constraint FrameSequenceNumber_per_cons_(new INTEGER(0), new INTEGER(15), FALSE); const ASN_PERdescriptor_t FrameSequenceNumber_per_ = { &FrameSequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t FrameSequenceNumber_descr_ = { "@RANAP-IEs.FrameSequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &FrameSequenceNumber_oer_, &FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FrameSequenceNumber_default_coding(""); // No XER for FrequenceLayerConvergenceFlag const TTCN_JSONdescriptor_t FrequenceLayerConvergenceFlag_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int FrequenceLayerConvergenceFlag_oer_ext_arr_[0] = {}; const int FrequenceLayerConvergenceFlag_oer_p_[0] = {}; const TTCN_OERdescriptor_t FrequenceLayerConvergenceFlag_oer_ = { -1, TRUE, -1, FALSE, 0, 0, FrequenceLayerConvergenceFlag_oer_ext_arr_, 0, FrequenceLayerConvergenceFlag_oer_p_}; static const Per_Constraint FrequenceLayerConvergenceFlag_per_cons_; const ASN_PERdescriptor_t FrequenceLayerConvergenceFlag_per_ = { &FrequenceLayerConvergenceFlag_per_cons_ }; const TTCN_Typedescriptor_t FrequenceLayerConvergenceFlag_descr_ = { "@RANAP-IEs.FrequenceLayerConvergenceFlag", &ENUMERATED_ber_, NULL, NULL, NULL, &FrequenceLayerConvergenceFlag_json_, &FrequenceLayerConvergenceFlag_oer_, &FrequenceLayerConvergenceFlag_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING FrequenceLayerConvergenceFlag_default_coding(""); // No XER for GANSS__PositioningDataSet const TTCN_JSONdescriptor_t GANSS__PositioningDataSet_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GANSS__PositioningDataSet_oer_ext_arr_[0] = {}; const int GANSS__PositioningDataSet_oer_p_[0] = {}; const TTCN_OERdescriptor_t GANSS__PositioningDataSet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GANSS__PositioningDataSet_oer_ext_arr_, 0, GANSS__PositioningDataSet_oer_p_}; static Per_Integer_Constraint GANSS__PositioningDataSet_per_cons_(new INTEGER(1), new INTEGER(9), FALSE); const ASN_PERdescriptor_t GANSS__PositioningDataSet_per_ = { &GANSS__PositioningDataSet_per_cons_ }; const TTCN_Typedescriptor_t GANSS__PositioningDataSet_descr_ = { "@RANAP-IEs.GANSS-PositioningDataSet", &SEQUENCE_ber_, NULL, NULL, NULL, &GANSS__PositioningDataSet_json_, &GANSS__PositioningDataSet_oer_, &GANSS__PositioningDataSet_per_, &GANSS__PositioningDataSet_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for GANSS__PositioningMethodAndUsage const int GANSS__PositioningMethodAndUsage_oer_ext_arr_[0] = {}; const int GANSS__PositioningMethodAndUsage_oer_p_[0] = {}; const TTCN_OERdescriptor_t GANSS__PositioningMethodAndUsage_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GANSS__PositioningMethodAndUsage_oer_ext_arr_, 0, GANSS__PositioningMethodAndUsage_oer_p_}; static Per_Integer_Constraint GANSS__PositioningMethodAndUsage_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t GANSS__PositioningMethodAndUsage_per_ = { &GANSS__PositioningMethodAndUsage_per_cons_ }; const TTCN_Typedescriptor_t GANSS__PositioningMethodAndUsage_descr_ = { "@RANAP-IEs.GANSS-PositioningMethodAndUsage", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GANSS__PositioningMethodAndUsage_oer_, &GANSS__PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GANSS__PositioningMethodAndUsage_default_coding(""); // No XER for GANSS__PositioningDataSet_0 const int GANSS__PositioningDataSet_0_oer_ext_arr_[0] = {}; const int GANSS__PositioningDataSet_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t GANSS__PositioningDataSet_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GANSS__PositioningDataSet_0_oer_ext_arr_, 0, GANSS__PositioningDataSet_0_oer_p_}; const TTCN_Typedescriptor_t GANSS__PositioningDataSet_0_descr_ = { "@RANAP-IEs.GANSS-PositioningDataSet.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GANSS__PositioningDataSet_0_oer_, &GANSS__PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GANSS__PositioningDataSet_0_default_coding(""); UNIVERSAL_CHARSTRING GANSS__PositioningDataSet_default_coding(""); const TTCN_Typedescriptor_t& GERAN__BSC__Container_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING GERAN__BSC__Container_default_coding(""); const ASN_Tag_t GERAN__Cell__ID_lAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GERAN__Cell__ID_lAI_ber_ = { 1u, GERAN__Cell__ID_lAI_tag_ }; // No XER for GERAN__Cell__ID_lAI const int GERAN__Cell__ID_lAI_oer_ext_arr_[0] = {}; const int GERAN__Cell__ID_lAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t GERAN__Cell__ID_lAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GERAN__Cell__ID_lAI_oer_ext_arr_, 3, GERAN__Cell__ID_lAI_oer_p_}; const TTCN_Typedescriptor_t GERAN__Cell__ID_lAI_descr_ = { "@RANAP-IEs.GERAN-Cell-ID.lAI", &GERAN__Cell__ID_lAI_ber_, NULL, NULL, NULL, &LAI_json_, &GERAN__Cell__ID_lAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GERAN__Cell__ID_lAI_default_coding(""); const ASN_Tag_t GERAN__Cell__ID_rAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GERAN__Cell__ID_rAC_ber_ = { 1u, GERAN__Cell__ID_rAC_tag_ }; // No XER for GERAN__Cell__ID_rAC const int GERAN__Cell__ID_rAC_oer_ext_arr_[0] = {}; const int GERAN__Cell__ID_rAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t GERAN__Cell__ID_rAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GERAN__Cell__ID_rAC_oer_ext_arr_, 0, GERAN__Cell__ID_rAC_oer_p_}; const TTCN_Typedescriptor_t GERAN__Cell__ID_rAC_descr_ = { "@RANAP-IEs.GERAN-Cell-ID.rAC", &GERAN__Cell__ID_rAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GERAN__Cell__ID_rAC_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GERAN__Cell__ID_rAC_default_coding(""); const ASN_Tag_t GERAN__Cell__ID_cI_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t GERAN__Cell__ID_cI_ber_ = { 1u, GERAN__Cell__ID_cI_tag_ }; // No XER for GERAN__Cell__ID_cI const int GERAN__Cell__ID_cI_oer_ext_arr_[0] = {}; const int GERAN__Cell__ID_cI_oer_p_[0] = {}; const TTCN_OERdescriptor_t GERAN__Cell__ID_cI_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GERAN__Cell__ID_cI_oer_ext_arr_, 0, GERAN__Cell__ID_cI_oer_p_}; const TTCN_Typedescriptor_t GERAN__Cell__ID_cI_descr_ = { "@RANAP-IEs.GERAN-Cell-ID.cI", &GERAN__Cell__ID_cI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GERAN__Cell__ID_cI_oer_, &CI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GERAN__Cell__ID_cI_default_coding(""); // No XER for GERAN__Cell__ID const TTCN_JSONdescriptor_t GERAN__Cell__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GERAN__Cell__ID_oer_ext_arr_[0] = {}; const int GERAN__Cell__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t GERAN__Cell__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GERAN__Cell__ID_oer_ext_arr_, 4, GERAN__Cell__ID_oer_p_}; static const Per_Constraint GERAN__Cell__ID_per_cons_; const ASN_PERdescriptor_t GERAN__Cell__ID_per_ = { &GERAN__Cell__ID_per_cons_ }; const TTCN_Typedescriptor_t GERAN__Cell__ID_descr_ = { "@RANAP-IEs.GERAN-Cell-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &GERAN__Cell__ID_json_, &GERAN__Cell__ID_oer_, &GERAN__Cell__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst41", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst41.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst41.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst41.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst41.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst41", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst41.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst41_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_default_coding(""); const ASN_Tag_t GERAN__Cell__ID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t GERAN__Cell__ID_iE__Extensions_ber_ = { 1u, GERAN__Cell__ID_iE__Extensions_tag_ }; // No XER for GERAN__Cell__ID_iE__Extensions const int GERAN__Cell__ID_iE__Extensions_oer_ext_arr_[0] = {}; const int GERAN__Cell__ID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t GERAN__Cell__ID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GERAN__Cell__ID_iE__Extensions_oer_ext_arr_, 0, GERAN__Cell__ID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t GERAN__Cell__ID_iE__Extensions_descr_ = { "@RANAP-IEs.GERAN-Cell-ID.iE-Extensions", &GERAN__Cell__ID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_json_, &GERAN__Cell__ID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst41_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GERAN__Cell__ID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING GERAN__Cell__ID_default_coding(""); const TTCN_Typedescriptor_t& GERAN__Classmark_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING GERAN__Classmark_default_coding(""); const ASN_Tag_t GlobalCN__ID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GlobalCN__ID_pLMNidentity_ber_ = { 1u, GlobalCN__ID_pLMNidentity_tag_ }; // No XER for GlobalCN__ID_pLMNidentity const int GlobalCN__ID_pLMNidentity_oer_ext_arr_[0] = {}; const int GlobalCN__ID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t GlobalCN__ID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, GlobalCN__ID_pLMNidentity_oer_ext_arr_, 0, GlobalCN__ID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t GlobalCN__ID_pLMNidentity_descr_ = { "@RANAP-IEs.GlobalCN-ID.pLMNidentity", &GlobalCN__ID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GlobalCN__ID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalCN__ID_pLMNidentity_default_coding(""); const ASN_Tag_t GlobalCN__ID_cN__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GlobalCN__ID_cN__ID_ber_ = { 1u, GlobalCN__ID_cN__ID_tag_ }; // No XER for GlobalCN__ID_cN__ID const int GlobalCN__ID_cN__ID_oer_ext_arr_[0] = {}; const int GlobalCN__ID_cN__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t GlobalCN__ID_cN__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, GlobalCN__ID_cN__ID_oer_ext_arr_, 0, GlobalCN__ID_cN__ID_oer_p_}; const TTCN_Typedescriptor_t GlobalCN__ID_cN__ID_descr_ = { "@RANAP-IEs.GlobalCN-ID.cN-ID", &GlobalCN__ID_cN__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &GlobalCN__ID_cN__ID_oer_, &CN__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalCN__ID_cN__ID_default_coding(""); // No XER for GlobalCN__ID const TTCN_JSONdescriptor_t GlobalCN__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GlobalCN__ID_oer_ext_arr_[0] = {}; const int GlobalCN__ID_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GlobalCN__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GlobalCN__ID_oer_ext_arr_, 2, GlobalCN__ID_oer_p_}; static const Per_Constraint GlobalCN__ID_per_cons_; const ASN_PERdescriptor_t GlobalCN__ID_per_ = { &GlobalCN__ID_per_cons_ }; const TTCN_Typedescriptor_t GlobalCN__ID_descr_ = { "@RANAP-IEs.GlobalCN-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &GlobalCN__ID_json_, &GlobalCN__ID_oer_, &GlobalCN__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalCN__ID_default_coding(""); const ASN_Tag_t GlobalRNC__ID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t GlobalRNC__ID_pLMNidentity_ber_ = { 1u, GlobalRNC__ID_pLMNidentity_tag_ }; // No XER for GlobalRNC__ID_pLMNidentity const int GlobalRNC__ID_pLMNidentity_oer_ext_arr_[0] = {}; const int GlobalRNC__ID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t GlobalRNC__ID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, GlobalRNC__ID_pLMNidentity_oer_ext_arr_, 0, GlobalRNC__ID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t GlobalRNC__ID_pLMNidentity_descr_ = { "@RANAP-IEs.GlobalRNC-ID.pLMNidentity", &GlobalRNC__ID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &GlobalRNC__ID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalRNC__ID_pLMNidentity_default_coding(""); // No XER for RNC__ID const int RNC__ID_oer_ext_arr_[0] = {}; const int RNC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNC__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, RNC__ID_oer_ext_arr_, 0, RNC__ID_oer_p_}; static Per_Integer_Constraint RNC__ID_per_cons_(new INTEGER(0), new INTEGER(4095), FALSE); const ASN_PERdescriptor_t RNC__ID_per_ = { &RNC__ID_per_cons_ }; const TTCN_Typedescriptor_t RNC__ID_descr_ = { "@RANAP-IEs.RNC-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RNC__ID_oer_, &RNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNC__ID_default_coding(""); const ASN_Tag_t GlobalRNC__ID_rNC__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t GlobalRNC__ID_rNC__ID_ber_ = { 1u, GlobalRNC__ID_rNC__ID_tag_ }; // No XER for GlobalRNC__ID_rNC__ID const int GlobalRNC__ID_rNC__ID_oer_ext_arr_[0] = {}; const int GlobalRNC__ID_rNC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t GlobalRNC__ID_rNC__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, GlobalRNC__ID_rNC__ID_oer_ext_arr_, 0, GlobalRNC__ID_rNC__ID_oer_p_}; const TTCN_Typedescriptor_t GlobalRNC__ID_rNC__ID_descr_ = { "@RANAP-IEs.GlobalRNC-ID.rNC-ID", &GlobalRNC__ID_rNC__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &GlobalRNC__ID_rNC__ID_oer_, &RNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalRNC__ID_rNC__ID_default_coding(""); // No XER for GlobalRNC__ID const TTCN_JSONdescriptor_t GlobalRNC__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int GlobalRNC__ID_oer_ext_arr_[0] = {}; const int GlobalRNC__ID_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t GlobalRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GlobalRNC__ID_oer_ext_arr_, 2, GlobalRNC__ID_oer_p_}; static const Per_Constraint GlobalRNC__ID_per_cons_; const ASN_PERdescriptor_t GlobalRNC__ID_per_ = { &GlobalRNC__ID_per_cons_ }; const TTCN_Typedescriptor_t GlobalRNC__ID_descr_ = { "@RANAP-IEs.GlobalRNC-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &GlobalRNC__ID_json_, &GlobalRNC__ID_oer_, &GlobalRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GlobalRNC__ID_default_coding(""); // No XER for GTP__TEI const int GTP__TEI_oer_ext_arr_[0] = {}; const int GTP__TEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t GTP__TEI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, GTP__TEI_oer_ext_arr_, 0, GTP__TEI_oer_p_}; static Per_Integer_Constraint GTP__TEI_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); const ASN_PERdescriptor_t GTP__TEI_per_ = { >P__TEI_per_cons_ }; const TTCN_Typedescriptor_t GTP__TEI_descr_ = { "@RANAP-IEs.GTP-TEI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, >P__TEI_oer_, >P__TEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING GTP__TEI_default_coding(""); // No XER for HigherBitratesThan16MbpsFlag const TTCN_JSONdescriptor_t HigherBitratesThan16MbpsFlag_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HigherBitratesThan16MbpsFlag_oer_ext_arr_[0] = {}; const int HigherBitratesThan16MbpsFlag_oer_p_[0] = {}; const TTCN_OERdescriptor_t HigherBitratesThan16MbpsFlag_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HigherBitratesThan16MbpsFlag_oer_ext_arr_, 0, HigherBitratesThan16MbpsFlag_oer_p_}; static const Per_Constraint HigherBitratesThan16MbpsFlag_per_cons_; const ASN_PERdescriptor_t HigherBitratesThan16MbpsFlag_per_ = { &HigherBitratesThan16MbpsFlag_per_cons_ }; const TTCN_Typedescriptor_t HigherBitratesThan16MbpsFlag_descr_ = { "@RANAP-IEs.HigherBitratesThan16MbpsFlag", &ENUMERATED_ber_, NULL, NULL, NULL, &HigherBitratesThan16MbpsFlag_json_, &HigherBitratesThan16MbpsFlag_oer_, &HigherBitratesThan16MbpsFlag_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HigherBitratesThan16MbpsFlag_default_coding(""); // No XER for HS__DSCH__MAC__d__Flow__ID const int HS__DSCH__MAC__d__Flow__ID_oer_ext_arr_[0] = {}; const int HS__DSCH__MAC__d__Flow__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t HS__DSCH__MAC__d__Flow__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, HS__DSCH__MAC__d__Flow__ID_oer_ext_arr_, 0, HS__DSCH__MAC__d__Flow__ID_oer_p_}; static Per_Integer_Constraint HS__DSCH__MAC__d__Flow__ID_per_cons_(new INTEGER(0), new INTEGER(7), FALSE); const ASN_PERdescriptor_t HS__DSCH__MAC__d__Flow__ID_per_ = { &HS__DSCH__MAC__d__Flow__ID_per_cons_ }; const TTCN_Typedescriptor_t HS__DSCH__MAC__d__Flow__ID_descr_ = { "@RANAP-IEs.HS-DSCH-MAC-d-Flow-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &HS__DSCH__MAC__d__Flow__ID_oer_, &HS__DSCH__MAC__d__Flow__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HS__DSCH__MAC__d__Flow__ID_default_coding(""); // No XER for MeasurementsToActivate const int MeasurementsToActivate_oer_ext_arr_[0] = {}; const int MeasurementsToActivate_oer_p_[0] = {}; const TTCN_OERdescriptor_t MeasurementsToActivate_oer_ = { -1, TRUE, 8, FALSE, 0, 0, MeasurementsToActivate_oer_ext_arr_, 0, MeasurementsToActivate_oer_p_}; static Per_Integer_Constraint MeasurementsToActivate_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); static Per_BitString_Constraint MeasurementsToActivate_per_cons_(FALSE, &MeasurementsToActivate_size_per_cons_); const ASN_PERdescriptor_t MeasurementsToActivate_per_ = { &MeasurementsToActivate_per_cons_ }; const TTCN_Typedescriptor_t MeasurementsToActivate_descr_ = { "@RANAP-IEs.MeasurementsToActivate", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &MeasurementsToActivate_oer_, &MeasurementsToActivate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MeasurementsToActivate_default_coding(""); const ASN_Tag_t ImmediateMDT_measurementsToActivate_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t ImmediateMDT_measurementsToActivate_ber_ = { 1u, ImmediateMDT_measurementsToActivate_tag_ }; // No XER for ImmediateMDT_measurementsToActivate const int ImmediateMDT_measurementsToActivate_oer_ext_arr_[0] = {}; const int ImmediateMDT_measurementsToActivate_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT_measurementsToActivate_oer_ = { -1, TRUE, 8, FALSE, 0, 0, ImmediateMDT_measurementsToActivate_oer_ext_arr_, 0, ImmediateMDT_measurementsToActivate_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT_measurementsToActivate_descr_ = { "@RANAP-IEs.ImmediateMDT.measurementsToActivate", &ImmediateMDT_measurementsToActivate_ber_, NULL, NULL, NULL, &BITSTRING_json_, &ImmediateMDT_measurementsToActivate_oer_, &MeasurementsToActivate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ImmediateMDT_measurementsToActivate_default_coding(""); // No XER for ImmediateMDT const TTCN_JSONdescriptor_t ImmediateMDT_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ImmediateMDT_oer_ext_arr_[0] = {}; const int ImmediateMDT_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t ImmediateMDT_oer_ = { -1, TRUE, -1, TRUE, 3, 0, ImmediateMDT_oer_ext_arr_, 4, ImmediateMDT_oer_p_}; static const Per_Constraint ImmediateMDT_per_cons_; const ASN_PERdescriptor_t ImmediateMDT_per_ = { &ImmediateMDT_per_cons_ }; const TTCN_Typedescriptor_t ImmediateMDT_descr_ = { "@RANAP-IEs.ImmediateMDT", &SEQUENCE_ber_, NULL, NULL, NULL, &ImmediateMDT_json_, &ImmediateMDT_oer_, &ImmediateMDT_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for M1Report const TTCN_JSONdescriptor_t M1Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M1Report_oer_ext_arr_[0] = {}; const int M1Report_oer_p_[0] = {}; const TTCN_OERdescriptor_t M1Report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M1Report_oer_ext_arr_, 0, M1Report_oer_p_}; static const Per_Constraint M1Report_per_cons_; const ASN_PERdescriptor_t M1Report_per_ = { &M1Report_per_cons_ }; const TTCN_Typedescriptor_t M1Report_descr_ = { "@RANAP-IEs.M1Report", &CHOICE_ber_, NULL, NULL, NULL, &M1Report_json_, &M1Report_oer_, &M1Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ReportInterval const TTCN_JSONdescriptor_t ReportInterval_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ReportInterval_oer_ext_arr_[0] = {}; const int ReportInterval_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReportInterval_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReportInterval_oer_ext_arr_, 0, ReportInterval_oer_p_}; static const Per_Constraint ReportInterval_per_cons_; const ASN_PERdescriptor_t ReportInterval_per_ = { &ReportInterval_per_cons_ }; const TTCN_Typedescriptor_t ReportInterval_descr_ = { "@RANAP-IEs.ReportInterval", &ENUMERATED_ber_, NULL, NULL, NULL, &ReportInterval_json_, &ReportInterval_oer_, &ReportInterval_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReportInterval_default_coding(""); const ASN_Tag_t MDT__Report__Parameters_reportInterval_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MDT__Report__Parameters_reportInterval_ber_ = { 1u, MDT__Report__Parameters_reportInterval_tag_ }; // No XER for MDT__Report__Parameters_reportInterval const int MDT__Report__Parameters_reportInterval_oer_ext_arr_[0] = {}; const int MDT__Report__Parameters_reportInterval_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Report__Parameters_reportInterval_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__Report__Parameters_reportInterval_oer_ext_arr_, 0, MDT__Report__Parameters_reportInterval_oer_p_}; const TTCN_Typedescriptor_t MDT__Report__Parameters_reportInterval_descr_ = { "@RANAP-IEs.MDT-Report-Parameters.reportInterval", &MDT__Report__Parameters_reportInterval_ber_, NULL, NULL, NULL, &ReportInterval_json_, &MDT__Report__Parameters_reportInterval_oer_, &ReportInterval_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Report__Parameters_reportInterval_default_coding(""); // No XER for ReportAmount const TTCN_JSONdescriptor_t ReportAmount_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ReportAmount_oer_ext_arr_[0] = {}; const int ReportAmount_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReportAmount_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReportAmount_oer_ext_arr_, 0, ReportAmount_oer_p_}; static const Per_Constraint ReportAmount_per_cons_; const ASN_PERdescriptor_t ReportAmount_per_ = { &ReportAmount_per_cons_ }; const TTCN_Typedescriptor_t ReportAmount_descr_ = { "@RANAP-IEs.ReportAmount", &ENUMERATED_ber_, NULL, NULL, NULL, &ReportAmount_json_, &ReportAmount_oer_, &ReportAmount_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReportAmount_default_coding(""); const ASN_Tag_t MDT__Report__Parameters_reportAmount_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MDT__Report__Parameters_reportAmount_ber_ = { 1u, MDT__Report__Parameters_reportAmount_tag_ }; // No XER for MDT__Report__Parameters_reportAmount const int MDT__Report__Parameters_reportAmount_oer_ext_arr_[0] = {}; const int MDT__Report__Parameters_reportAmount_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Report__Parameters_reportAmount_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__Report__Parameters_reportAmount_oer_ext_arr_, 0, MDT__Report__Parameters_reportAmount_oer_p_}; const TTCN_Typedescriptor_t MDT__Report__Parameters_reportAmount_descr_ = { "@RANAP-IEs.MDT-Report-Parameters.reportAmount", &MDT__Report__Parameters_reportAmount_ber_, NULL, NULL, NULL, &ReportAmount_json_, &MDT__Report__Parameters_reportAmount_oer_, &ReportAmount_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Report__Parameters_reportAmount_default_coding(""); // No XER for MDT__Report__Parameters const TTCN_JSONdescriptor_t MDT__Report__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDT__Report__Parameters_oer_ext_arr_[0] = {}; const int MDT__Report__Parameters_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t MDT__Report__Parameters_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDT__Report__Parameters_oer_ext_arr_, 2, MDT__Report__Parameters_oer_p_}; static const Per_Constraint MDT__Report__Parameters_per_cons_; const ASN_PERdescriptor_t MDT__Report__Parameters_per_ = { &MDT__Report__Parameters_per_cons_ }; const TTCN_Typedescriptor_t MDT__Report__Parameters_descr_ = { "@RANAP-IEs.MDT-Report-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &MDT__Report__Parameters_json_, &MDT__Report__Parameters_oer_, &MDT__Report__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Report__Parameters_default_coding(""); const ASN_Tag_t M1Report_periodic_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M1Report_periodic_ber_ = { 1u, M1Report_periodic_tag_ }; // No XER for M1Report_periodic const int M1Report_periodic_oer_ext_arr_[0] = {}; const int M1Report_periodic_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t M1Report_periodic_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M1Report_periodic_oer_ext_arr_, 2, M1Report_periodic_oer_p_}; const TTCN_Typedescriptor_t M1Report_periodic_descr_ = { "@RANAP-IEs.M1Report.periodic", &M1Report_periodic_ber_, NULL, NULL, NULL, &MDT__Report__Parameters_json_, &M1Report_periodic_oer_, &MDT__Report__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M1Report_periodic_default_coding(""); const ASN_Tag_t M1Report_event1F_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M1Report_event1F_ber_ = { 1u, M1Report_event1F_tag_ }; // No XER for M1Report_event1F const int M1Report_event1F_oer_ext_arr_[0] = {}; const int M1Report_event1F_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t M1Report_event1F_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M1Report_event1F_oer_ext_arr_, 2, M1Report_event1F_oer_p_}; const TTCN_Typedescriptor_t M1Report_event1F_descr_ = { "@RANAP-IEs.M1Report.event1F", &M1Report_event1F_ber_, NULL, NULL, NULL, &Event1F__Parameters_json_, &M1Report_event1F_oer_, &Event1F__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M1Report_event1F_default_coding(""); UNIVERSAL_CHARSTRING M1Report_default_coding(""); const ASN_Tag_t ImmediateMDT_m1report_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t ImmediateMDT_m1report_ber_ = { 1u, ImmediateMDT_m1report_tag_ }; // No XER for ImmediateMDT_m1report const int ImmediateMDT_m1report_oer_ext_arr_[0] = {}; const int ImmediateMDT_m1report_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT_m1report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ImmediateMDT_m1report_oer_ext_arr_, 0, ImmediateMDT_m1report_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT_m1report_descr_ = { "@RANAP-IEs.ImmediateMDT.m1report", &ImmediateMDT_m1report_ber_, NULL, NULL, NULL, &M1Report_json_, &ImmediateMDT_m1report_oer_, &M1Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ImmediateMDT_m1report_default_coding(""); // No XER for M2Report const TTCN_JSONdescriptor_t M2Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M2Report_oer_ext_arr_[0] = {}; const int M2Report_oer_p_[0] = {}; const TTCN_OERdescriptor_t M2Report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M2Report_oer_ext_arr_, 0, M2Report_oer_p_}; static const Per_Constraint M2Report_per_cons_; const ASN_PERdescriptor_t M2Report_per_ = { &M2Report_per_cons_ }; const TTCN_Typedescriptor_t M2Report_descr_ = { "@RANAP-IEs.M2Report", &CHOICE_ber_, NULL, NULL, NULL, &M2Report_json_, &M2Report_oer_, &M2Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t M2Report_periodic_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M2Report_periodic_ber_ = { 1u, M2Report_periodic_tag_ }; // No XER for M2Report_periodic const int M2Report_periodic_oer_ext_arr_[0] = {}; const int M2Report_periodic_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t M2Report_periodic_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M2Report_periodic_oer_ext_arr_, 2, M2Report_periodic_oer_p_}; const TTCN_Typedescriptor_t M2Report_periodic_descr_ = { "@RANAP-IEs.M2Report.periodic", &M2Report_periodic_ber_, NULL, NULL, NULL, &MDT__Report__Parameters_json_, &M2Report_periodic_oer_, &MDT__Report__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M2Report_periodic_default_coding(""); const ASN_Tag_t M2Report_event1I_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M2Report_event1I_ber_ = { 1u, M2Report_event1I_tag_ }; // No XER for M2Report_event1I const int M2Report_event1I_oer_ext_arr_[0] = {}; const int M2Report_event1I_oer_p_[1] = {0}; const TTCN_OERdescriptor_t M2Report_event1I_oer_ = { -1, TRUE, -1, TRUE, 1, 0, M2Report_event1I_oer_ext_arr_, 1, M2Report_event1I_oer_p_}; const TTCN_Typedescriptor_t M2Report_event1I_descr_ = { "@RANAP-IEs.M2Report.event1I", &M2Report_event1I_ber_, NULL, NULL, NULL, &Event1I__Parameters_json_, &M2Report_event1I_oer_, &Event1I__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M2Report_event1I_default_coding(""); UNIVERSAL_CHARSTRING M2Report_default_coding(""); const ASN_Tag_t ImmediateMDT_m2report_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t ImmediateMDT_m2report_ber_ = { 1u, ImmediateMDT_m2report_tag_ }; // No XER for ImmediateMDT_m2report const int ImmediateMDT_m2report_oer_ext_arr_[0] = {}; const int ImmediateMDT_m2report_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT_m2report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ImmediateMDT_m2report_oer_ext_arr_, 0, ImmediateMDT_m2report_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT_m2report_descr_ = { "@RANAP-IEs.ImmediateMDT.m2report", &ImmediateMDT_m2report_ber_, NULL, NULL, NULL, &M2Report_json_, &ImmediateMDT_m2report_oer_, &M2Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ImmediateMDT_m2report_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst42", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst45.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst45.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst45.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for M4Report const TTCN_JSONdescriptor_t M4Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M4Report_oer_ext_arr_[0] = {}; const int M4Report_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4Report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M4Report_oer_ext_arr_, 0, M4Report_oer_p_}; static const Per_Constraint M4Report_per_cons_; const ASN_PERdescriptor_t M4Report_per_ = { &M4Report_per_cons_ }; const TTCN_Typedescriptor_t M4Report_descr_ = { "@RANAP-IEs.M4Report", &CHOICE_ber_, NULL, NULL, NULL, &M4Report_json_, &M4Report_oer_, &M4Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t M4Report_all___tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M4Report_all___ber_ = { 1u, M4Report_all___tag_ }; // No XER for M4Report_all__ const int M4Report_all___oer_ext_arr_[0] = {}; const int M4Report_all___oer_p_[0] = {}; const TTCN_OERdescriptor_t M4Report_all___oer_ = { -1, TRUE, -1, FALSE, 0, 0, M4Report_all___oer_ext_arr_, 0, M4Report_all___oer_p_}; const TTCN_Typedescriptor_t M4Report_all___descr_ = { "@RANAP-IEs.M4Report.all", &M4Report_all___ber_, NULL, NULL, NULL, &ASN_NULL_json_, &M4Report_all___oer_, &ASN_NULL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4Report_all___default_coding(""); // No XER for M4__Period const TTCN_JSONdescriptor_t M4__Period_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M4__Period_oer_ext_arr_[0] = {}; const int M4__Period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4__Period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M4__Period_oer_ext_arr_, 0, M4__Period_oer_p_}; static const Per_Constraint M4__Period_per_cons_; const ASN_PERdescriptor_t M4__Period_per_ = { &M4__Period_per_cons_ }; const TTCN_Typedescriptor_t M4__Period_descr_ = { "@RANAP-IEs.M4-Period", &ENUMERATED_ber_, NULL, NULL, NULL, &M4__Period_json_, &M4__Period_oer_, &M4__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4__Period_default_coding(""); const ASN_Tag_t M4__Collection__Parameters_m4__period_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M4__Collection__Parameters_m4__period_ber_ = { 1u, M4__Collection__Parameters_m4__period_tag_ }; // No XER for M4__Collection__Parameters_m4__period const int M4__Collection__Parameters_m4__period_oer_ext_arr_[0] = {}; const int M4__Collection__Parameters_m4__period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4__Collection__Parameters_m4__period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M4__Collection__Parameters_m4__period_oer_ext_arr_, 0, M4__Collection__Parameters_m4__period_oer_p_}; const TTCN_Typedescriptor_t M4__Collection__Parameters_m4__period_descr_ = { "@RANAP-IEs.M4-Collection-Parameters.m4-period", &M4__Collection__Parameters_m4__period_ber_, NULL, NULL, NULL, &M4__Period_json_, &M4__Collection__Parameters_m4__period_oer_, &M4__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4__Collection__Parameters_m4__period_default_coding(""); // No XER for M4__Collection__Parameters const TTCN_JSONdescriptor_t M4__Collection__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M4__Collection__Parameters_oer_ext_arr_[0] = {}; const int M4__Collection__Parameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t M4__Collection__Parameters_oer_ = { -1, TRUE, -1, TRUE, 3, 0, M4__Collection__Parameters_oer_ext_arr_, 3, M4__Collection__Parameters_oer_p_}; static const Per_Constraint M4__Collection__Parameters_per_cons_; const ASN_PERdescriptor_t M4__Collection__Parameters_per_ = { &M4__Collection__Parameters_per_cons_ }; const TTCN_Typedescriptor_t M4__Collection__Parameters_descr_ = { "@RANAP-IEs.M4-Collection-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &M4__Collection__Parameters_json_, &M4__Collection__Parameters_oer_, &M4__Collection__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for M4__Threshold const int M4__Threshold_oer_ext_arr_[0] = {}; const int M4__Threshold_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4__Threshold_oer_ = { 1, FALSE, -1, FALSE, 0, 0, M4__Threshold_oer_ext_arr_, 0, M4__Threshold_oer_p_}; static Per_Integer_Constraint M4__Threshold_per_cons_(new INTEGER(0), new INTEGER(31), FALSE); const ASN_PERdescriptor_t M4__Threshold_per_ = { &M4__Threshold_per_cons_ }; const TTCN_Typedescriptor_t M4__Threshold_descr_ = { "@RANAP-IEs.M4-Threshold", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &M4__Threshold_oer_, &M4__Threshold_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4__Threshold_default_coding(""); const ASN_Tag_t M4__Collection__Parameters_m4__threshold_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M4__Collection__Parameters_m4__threshold_ber_ = { 1u, M4__Collection__Parameters_m4__threshold_tag_ }; // No XER for M4__Collection__Parameters_m4__threshold const int M4__Collection__Parameters_m4__threshold_oer_ext_arr_[0] = {}; const int M4__Collection__Parameters_m4__threshold_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4__Collection__Parameters_m4__threshold_oer_ = { 1, FALSE, -1, FALSE, 0, 0, M4__Collection__Parameters_m4__threshold_oer_ext_arr_, 0, M4__Collection__Parameters_m4__threshold_oer_p_}; const TTCN_Typedescriptor_t M4__Collection__Parameters_m4__threshold_descr_ = { "@RANAP-IEs.M4-Collection-Parameters.m4-threshold", &M4__Collection__Parameters_m4__threshold_ber_, NULL, NULL, NULL, &INTEGER_json_, &M4__Collection__Parameters_m4__threshold_oer_, &M4__Threshold_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4__Collection__Parameters_m4__threshold_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst43", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst42.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst42.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst42.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst42.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst42", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst43.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst42_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_default_coding(""); const ASN_Tag_t M4__Collection__Parameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t M4__Collection__Parameters_iE__Extensions_ber_ = { 1u, M4__Collection__Parameters_iE__Extensions_tag_ }; // No XER for M4__Collection__Parameters_iE__Extensions const int M4__Collection__Parameters_iE__Extensions_oer_ext_arr_[0] = {}; const int M4__Collection__Parameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t M4__Collection__Parameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M4__Collection__Parameters_iE__Extensions_oer_ext_arr_, 0, M4__Collection__Parameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t M4__Collection__Parameters_iE__Extensions_descr_ = { "@RANAP-IEs.M4-Collection-Parameters.iE-Extensions", &M4__Collection__Parameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_json_, &M4__Collection__Parameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst43_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4__Collection__Parameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING M4__Collection__Parameters_default_coding(""); const ASN_Tag_t M4Report_m4__collection__parameters_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M4Report_m4__collection__parameters_ber_ = { 1u, M4Report_m4__collection__parameters_tag_ }; // No XER for M4Report_m4__collection__parameters const int M4Report_m4__collection__parameters_oer_ext_arr_[0] = {}; const int M4Report_m4__collection__parameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t M4Report_m4__collection__parameters_oer_ = { -1, TRUE, -1, TRUE, 3, 0, M4Report_m4__collection__parameters_oer_ext_arr_, 3, M4Report_m4__collection__parameters_oer_p_}; const TTCN_Typedescriptor_t M4Report_m4__collection__parameters_descr_ = { "@RANAP-IEs.M4Report.m4-collection-parameters", &M4Report_m4__collection__parameters_ber_, NULL, NULL, NULL, &M4__Collection__Parameters_json_, &M4Report_m4__collection__parameters_oer_, &M4__Collection__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M4Report_m4__collection__parameters_default_coding(""); UNIVERSAL_CHARSTRING M4Report_default_coding(""); // No XER for ImmediateMDT__ExtIEs_1_Extension const int ImmediateMDT__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int ImmediateMDT__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT__ExtIEs_1_Extension_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ImmediateMDT__ExtIEs_1_Extension_oer_ext_arr_, 0, ImmediateMDT__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.ImmediateMDT-ExtIEs.1.&Extension", &CHOICE_ber_, NULL, NULL, NULL, &M4Report_json_, &ImmediateMDT__ExtIEs_1_Extension_oer_, &M4Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_ImmediateMDT__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& ImmediateMDT__ExtIEs_1_criticality = const_ImmediateMDT__ExtIEs_1_criticality; INTEGER const_ImmediateMDT__ExtIEs_1_id; const INTEGER& ImmediateMDT__ExtIEs_1_id = const_ImmediateMDT__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_ImmediateMDT__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& ImmediateMDT__ExtIEs_1_presence = const_ImmediateMDT__ExtIEs_1_presence; // No XER for M5Report const TTCN_JSONdescriptor_t M5Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M5Report_oer_ext_arr_[0] = {}; const int M5Report_oer_p_[0] = {}; const TTCN_OERdescriptor_t M5Report_oer_ = { -1, TRUE, -1, TRUE, 2, 0, M5Report_oer_ext_arr_, 0, M5Report_oer_p_}; static const Per_Constraint M5Report_per_cons_; const ASN_PERdescriptor_t M5Report_per_ = { &M5Report_per_cons_ }; const TTCN_Typedescriptor_t M5Report_descr_ = { "@RANAP-IEs.M5Report", &CHOICE_ber_, NULL, NULL, NULL, &M5Report_json_, &M5Report_oer_, &M5Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t M5Report_when__available_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M5Report_when__available_ber_ = { 1u, M5Report_when__available_tag_ }; // No XER for M5Report_when__available const int M5Report_when__available_oer_ext_arr_[0] = {}; const int M5Report_when__available_oer_p_[0] = {}; const TTCN_OERdescriptor_t M5Report_when__available_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M5Report_when__available_oer_ext_arr_, 0, M5Report_when__available_oer_p_}; const TTCN_Typedescriptor_t M5Report_when__available_descr_ = { "@RANAP-IEs.M5Report.when-available", &M5Report_when__available_ber_, NULL, NULL, NULL, &ASN_NULL_json_, &M5Report_when__available_oer_, &ASN_NULL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M5Report_when__available_default_coding(""); // No XER for M5__Period const TTCN_JSONdescriptor_t M5__Period_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M5__Period_oer_ext_arr_[0] = {}; const int M5__Period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M5__Period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M5__Period_oer_ext_arr_, 0, M5__Period_oer_p_}; static const Per_Constraint M5__Period_per_cons_; const ASN_PERdescriptor_t M5__Period_per_ = { &M5__Period_per_cons_ }; const TTCN_Typedescriptor_t M5__Period_descr_ = { "@RANAP-IEs.M5-Period", &ENUMERATED_ber_, NULL, NULL, NULL, &M5__Period_json_, &M5__Period_oer_, &M5__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M5__Period_default_coding(""); const ASN_Tag_t M5Report_m5__period_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M5Report_m5__period_ber_ = { 1u, M5Report_m5__period_tag_ }; // No XER for M5Report_m5__period const int M5Report_m5__period_oer_ext_arr_[0] = {}; const int M5Report_m5__period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M5Report_m5__period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M5Report_m5__period_oer_ext_arr_, 0, M5Report_m5__period_oer_p_}; const TTCN_Typedescriptor_t M5Report_m5__period_descr_ = { "@RANAP-IEs.M5Report.m5-period", &M5Report_m5__period_ber_, NULL, NULL, NULL, &M5__Period_json_, &M5Report_m5__period_oer_, &M5__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M5Report_m5__period_default_coding(""); UNIVERSAL_CHARSTRING M5Report_default_coding(""); // No XER for ImmediateMDT__ExtIEs_2_Extension const int ImmediateMDT__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int ImmediateMDT__ExtIEs_2_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT__ExtIEs_2_Extension_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ImmediateMDT__ExtIEs_2_Extension_oer_ext_arr_, 0, ImmediateMDT__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.ImmediateMDT-ExtIEs.2.&Extension", &CHOICE_ber_, NULL, NULL, NULL, &M5Report_json_, &ImmediateMDT__ExtIEs_2_Extension_oer_, &M5Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_ImmediateMDT__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& ImmediateMDT__ExtIEs_2_criticality = const_ImmediateMDT__ExtIEs_2_criticality; INTEGER const_ImmediateMDT__ExtIEs_2_id; const INTEGER& ImmediateMDT__ExtIEs_2_id = const_ImmediateMDT__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_ImmediateMDT__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& ImmediateMDT__ExtIEs_2_presence = const_ImmediateMDT__ExtIEs_2_presence; // No XER for M6__Period const TTCN_JSONdescriptor_t M6__Period_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M6__Period_oer_ext_arr_[0] = {}; const int M6__Period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M6__Period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M6__Period_oer_ext_arr_, 0, M6__Period_oer_p_}; static const Per_Constraint M6__Period_per_cons_; const ASN_PERdescriptor_t M6__Period_per_ = { &M6__Period_per_cons_ }; const TTCN_Typedescriptor_t M6__Period_descr_ = { "@RANAP-IEs.M6-Period", &ENUMERATED_ber_, NULL, NULL, NULL, &M6__Period_json_, &M6__Period_oer_, &M6__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M6__Period_default_coding(""); const ASN_Tag_t M6Report_m6__period_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M6Report_m6__period_ber_ = { 1u, M6Report_m6__period_tag_ }; // No XER for M6Report_m6__period const int M6Report_m6__period_oer_ext_arr_[0] = {}; const int M6Report_m6__period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M6Report_m6__period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M6Report_m6__period_oer_ext_arr_, 0, M6Report_m6__period_oer_p_}; const TTCN_Typedescriptor_t M6Report_m6__period_descr_ = { "@RANAP-IEs.M6Report.m6-period", &M6Report_m6__period_ber_, NULL, NULL, NULL, &M6__Period_json_, &M6Report_m6__period_oer_, &M6__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M6Report_m6__period_default_coding(""); // No XER for Links__to__log const TTCN_JSONdescriptor_t Links__to__log_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Links__to__log_oer_ext_arr_[0] = {}; const int Links__to__log_oer_p_[0] = {}; const TTCN_OERdescriptor_t Links__to__log_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Links__to__log_oer_ext_arr_, 0, Links__to__log_oer_p_}; static const Per_Constraint Links__to__log_per_cons_; const ASN_PERdescriptor_t Links__to__log_per_ = { &Links__to__log_per_cons_ }; const TTCN_Typedescriptor_t Links__to__log_descr_ = { "@RANAP-IEs.Links-to-log", &ENUMERATED_ber_, NULL, NULL, NULL, &Links__to__log_json_, &Links__to__log_oer_, &Links__to__log_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Links__to__log_default_coding(""); const ASN_Tag_t M6Report_m6__links__to__log_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M6Report_m6__links__to__log_ber_ = { 1u, M6Report_m6__links__to__log_tag_ }; // No XER for M6Report_m6__links__to__log const int M6Report_m6__links__to__log_oer_ext_arr_[0] = {}; const int M6Report_m6__links__to__log_oer_p_[0] = {}; const TTCN_OERdescriptor_t M6Report_m6__links__to__log_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M6Report_m6__links__to__log_oer_ext_arr_, 0, M6Report_m6__links__to__log_oer_p_}; const TTCN_Typedescriptor_t M6Report_m6__links__to__log_descr_ = { "@RANAP-IEs.M6Report.m6-links-to-log", &M6Report_m6__links__to__log_ber_, NULL, NULL, NULL, &Links__to__log_json_, &M6Report_m6__links__to__log_oer_, &Links__to__log_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M6Report_m6__links__to__log_default_coding(""); // No XER for M6Report const TTCN_JSONdescriptor_t M6Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M6Report_oer_ext_arr_[0] = {}; const int M6Report_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t M6Report_oer_ = { -1, TRUE, -1, TRUE, 3, 0, M6Report_oer_ext_arr_, 3, M6Report_oer_p_}; static const Per_Constraint M6Report_per_cons_; const ASN_PERdescriptor_t M6Report_per_ = { &M6Report_per_cons_ }; const TTCN_Typedescriptor_t M6Report_descr_ = { "@RANAP-IEs.M6Report", &SEQUENCE_ber_, NULL, NULL, NULL, &M6Report_json_, &M6Report_oer_, &M6Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst44", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst43.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst43.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst43.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst43.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst43", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst44.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst43_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_default_coding(""); const ASN_Tag_t M6Report_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t M6Report_iE__Extensions_ber_ = { 1u, M6Report_iE__Extensions_tag_ }; // No XER for M6Report_iE__Extensions const int M6Report_iE__Extensions_oer_ext_arr_[0] = {}; const int M6Report_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t M6Report_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M6Report_iE__Extensions_oer_ext_arr_, 0, M6Report_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t M6Report_iE__Extensions_descr_ = { "@RANAP-IEs.M6Report.iE-Extensions", &M6Report_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_json_, &M6Report_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst44_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M6Report_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING M6Report_default_coding(""); // No XER for ImmediateMDT__ExtIEs_3_Extension const int ImmediateMDT__ExtIEs_3_Extension_oer_ext_arr_[0] = {}; const int ImmediateMDT__ExtIEs_3_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t ImmediateMDT__ExtIEs_3_Extension_oer_ = { -1, TRUE, -1, TRUE, 3, 0, ImmediateMDT__ExtIEs_3_Extension_oer_ext_arr_, 3, ImmediateMDT__ExtIEs_3_Extension_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT__ExtIEs_3_Extension_descr_ = { "@RANAP-IEs.ImmediateMDT-ExtIEs.3.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &M6Report_json_, &ImmediateMDT__ExtIEs_3_Extension_oer_, &M6Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_ImmediateMDT__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& ImmediateMDT__ExtIEs_3_criticality = const_ImmediateMDT__ExtIEs_3_criticality; INTEGER const_ImmediateMDT__ExtIEs_3_id; const INTEGER& ImmediateMDT__ExtIEs_3_id = const_ImmediateMDT__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_ImmediateMDT__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& ImmediateMDT__ExtIEs_3_presence = const_ImmediateMDT__ExtIEs_3_presence; // No XER for M7__Period const TTCN_JSONdescriptor_t M7__Period_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M7__Period_oer_ext_arr_[0] = {}; const int M7__Period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M7__Period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M7__Period_oer_ext_arr_, 0, M7__Period_oer_p_}; static const Per_Constraint M7__Period_per_cons_; const ASN_PERdescriptor_t M7__Period_per_ = { &M7__Period_per_cons_ }; const TTCN_Typedescriptor_t M7__Period_descr_ = { "@RANAP-IEs.M7-Period", &ENUMERATED_ber_, NULL, NULL, NULL, &M7__Period_json_, &M7__Period_oer_, &M7__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M7__Period_default_coding(""); const ASN_Tag_t M7Report_m7__period_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t M7Report_m7__period_ber_ = { 1u, M7Report_m7__period_tag_ }; // No XER for M7Report_m7__period const int M7Report_m7__period_oer_ext_arr_[0] = {}; const int M7Report_m7__period_oer_p_[0] = {}; const TTCN_OERdescriptor_t M7Report_m7__period_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M7Report_m7__period_oer_ext_arr_, 0, M7Report_m7__period_oer_p_}; const TTCN_Typedescriptor_t M7Report_m7__period_descr_ = { "@RANAP-IEs.M7Report.m7-period", &M7Report_m7__period_ber_, NULL, NULL, NULL, &M7__Period_json_, &M7Report_m7__period_oer_, &M7__Period_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M7Report_m7__period_default_coding(""); const ASN_Tag_t M7Report_m7__links__to__log_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t M7Report_m7__links__to__log_ber_ = { 1u, M7Report_m7__links__to__log_tag_ }; // No XER for M7Report_m7__links__to__log const int M7Report_m7__links__to__log_oer_ext_arr_[0] = {}; const int M7Report_m7__links__to__log_oer_p_[0] = {}; const TTCN_OERdescriptor_t M7Report_m7__links__to__log_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M7Report_m7__links__to__log_oer_ext_arr_, 0, M7Report_m7__links__to__log_oer_p_}; const TTCN_Typedescriptor_t M7Report_m7__links__to__log_descr_ = { "@RANAP-IEs.M7Report.m7-links-to-log", &M7Report_m7__links__to__log_ber_, NULL, NULL, NULL, &Links__to__log_json_, &M7Report_m7__links__to__log_oer_, &Links__to__log_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M7Report_m7__links__to__log_default_coding(""); // No XER for M7Report const TTCN_JSONdescriptor_t M7Report_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int M7Report_oer_ext_arr_[0] = {}; const int M7Report_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t M7Report_oer_ = { -1, TRUE, -1, TRUE, 3, 0, M7Report_oer_ext_arr_, 3, M7Report_oer_p_}; static const Per_Constraint M7Report_per_cons_; const ASN_PERdescriptor_t M7Report_per_ = { &M7Report_per_cons_ }; const TTCN_Typedescriptor_t M7Report_descr_ = { "@RANAP-IEs.M7Report", &SEQUENCE_ber_, NULL, NULL, NULL, &M7Report_json_, &M7Report_oer_, &M7Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst45", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst44.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst44.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst44.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst44.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst44", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst45.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst44_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_default_coding(""); const ASN_Tag_t M7Report_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t M7Report_iE__Extensions_ber_ = { 1u, M7Report_iE__Extensions_tag_ }; // No XER for M7Report_iE__Extensions const int M7Report_iE__Extensions_oer_ext_arr_[0] = {}; const int M7Report_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t M7Report_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, M7Report_iE__Extensions_oer_ext_arr_, 0, M7Report_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t M7Report_iE__Extensions_descr_ = { "@RANAP-IEs.M7Report.iE-Extensions", &M7Report_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_json_, &M7Report_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst45_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING M7Report_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING M7Report_default_coding(""); // No XER for ImmediateMDT__ExtIEs_4_Extension const int ImmediateMDT__ExtIEs_4_Extension_oer_ext_arr_[0] = {}; const int ImmediateMDT__ExtIEs_4_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t ImmediateMDT__ExtIEs_4_Extension_oer_ = { -1, TRUE, -1, TRUE, 3, 0, ImmediateMDT__ExtIEs_4_Extension_oer_ext_arr_, 3, ImmediateMDT__ExtIEs_4_Extension_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT__ExtIEs_4_Extension_descr_ = { "@RANAP-IEs.ImmediateMDT-ExtIEs.4.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &M7Report_json_, &ImmediateMDT__ExtIEs_4_Extension_oer_, &M7Report_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_ImmediateMDT__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& ImmediateMDT__ExtIEs_4_criticality = const_ImmediateMDT__ExtIEs_4_criticality; INTEGER const_ImmediateMDT__ExtIEs_4_id; const INTEGER& ImmediateMDT__ExtIEs_4_id = const_ImmediateMDT__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_ImmediateMDT__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& ImmediateMDT__ExtIEs_4_presence = const_ImmediateMDT__ExtIEs_4_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst45.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst45", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst42.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst45_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_default_coding(""); const ASN_Tag_t ImmediateMDT_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t ImmediateMDT_iE__Extensions_ber_ = { 1u, ImmediateMDT_iE__Extensions_tag_ }; // No XER for ImmediateMDT_iE__Extensions const int ImmediateMDT_iE__Extensions_oer_ext_arr_[0] = {}; const int ImmediateMDT_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t ImmediateMDT_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ImmediateMDT_iE__Extensions_oer_ext_arr_, 0, ImmediateMDT_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t ImmediateMDT_iE__Extensions_descr_ = { "@RANAP-IEs.ImmediateMDT.iE-Extensions", &ImmediateMDT_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_json_, &ImmediateMDT_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst42_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ImmediateMDT_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING ImmediateMDT_default_coding(""); // No XER for IMSI const int IMSI_oer_ext_arr_[0] = {}; const int IMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t IMSI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IMSI_oer_ext_arr_, 0, IMSI_oer_p_}; static Per_Integer_Constraint IMSI_per_cons_(new INTEGER(3), new INTEGER(8), FALSE); const ASN_PERdescriptor_t IMSI_per_ = { &IMSI_per_cons_ }; const TTCN_Typedescriptor_t IMSI_descr_ = { "@RANAP-IEs.IMSI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IMSI_oer_, &IMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IMSI_default_coding(""); // No XER for IncludeVelocity const TTCN_JSONdescriptor_t IncludeVelocity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IncludeVelocity_oer_ext_arr_[0] = {}; const int IncludeVelocity_oer_p_[0] = {}; const TTCN_OERdescriptor_t IncludeVelocity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IncludeVelocity_oer_ext_arr_, 0, IncludeVelocity_oer_p_}; static const Per_Constraint IncludeVelocity_per_cons_; const ASN_PERdescriptor_t IncludeVelocity_per_ = { &IncludeVelocity_per_cons_ }; const TTCN_Typedescriptor_t IncludeVelocity_descr_ = { "@RANAP-IEs.IncludeVelocity", &ENUMERATED_ber_, NULL, NULL, NULL, &IncludeVelocity_json_, &IncludeVelocity_oer_, &IncludeVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IncludeVelocity_default_coding(""); // No XER for InformationExchangeID const int InformationExchangeID_oer_ext_arr_[0] = {}; const int InformationExchangeID_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationExchangeID_oer_ = { 4, FALSE, -1, FALSE, 0, 0, InformationExchangeID_oer_ext_arr_, 0, InformationExchangeID_oer_p_}; static Per_Integer_Constraint InformationExchangeID_per_cons_(new INTEGER(0), new INTEGER(1048575), FALSE); const ASN_PERdescriptor_t InformationExchangeID_per_ = { &InformationExchangeID_per_cons_ }; const TTCN_Typedescriptor_t InformationExchangeID_descr_ = { "@RANAP-IEs.InformationExchangeID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &InformationExchangeID_oer_, &InformationExchangeID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationExchangeID_default_coding(""); // No XER for InformationExchangeType const TTCN_JSONdescriptor_t InformationExchangeType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InformationExchangeType_oer_ext_arr_[0] = {}; const int InformationExchangeType_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationExchangeType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InformationExchangeType_oer_ext_arr_, 0, InformationExchangeType_oer_p_}; static const Per_Constraint InformationExchangeType_per_cons_; const ASN_PERdescriptor_t InformationExchangeType_per_ = { &InformationExchangeType_per_cons_ }; const TTCN_Typedescriptor_t InformationExchangeType_descr_ = { "@RANAP-IEs.InformationExchangeType", &ENUMERATED_ber_, NULL, NULL, NULL, &InformationExchangeType_json_, &InformationExchangeType_oer_, &InformationExchangeType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationExchangeType_default_coding(""); // No XER for InformationRequested const TTCN_JSONdescriptor_t InformationRequested_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InformationRequested_oer_ext_arr_[0] = {}; const int InformationRequested_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequested_oer_ = { -1, TRUE, -1, TRUE, 2, 0, InformationRequested_oer_ext_arr_, 0, InformationRequested_oer_p_}; static const Per_Constraint InformationRequested_per_cons_; const ASN_PERdescriptor_t InformationRequested_per_ = { &InformationRequested_per_cons_ }; const TTCN_Typedescriptor_t InformationRequested_descr_ = { "@RANAP-IEs.InformationRequested", &CHOICE_ber_, NULL, NULL, NULL, &InformationRequested_json_, &InformationRequested_oer_, &InformationRequested_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RequestedMBMSIPMulticastAddressandAPNRequest const TTCN_JSONdescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RequestedMBMSIPMulticastAddressandAPNRequest_oer_ext_arr_[0] = {}; const int RequestedMBMSIPMulticastAddressandAPNRequest_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedMBMSIPMulticastAddressandAPNRequest_oer_ext_arr_, 0, RequestedMBMSIPMulticastAddressandAPNRequest_oer_p_}; static Per_Integer_Constraint RequestedMBMSIPMulticastAddressandAPNRequest_per_cons_(new INTEGER(1), new INTEGER(512), FALSE); const ASN_PERdescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_per_ = { &RequestedMBMSIPMulticastAddressandAPNRequest_per_cons_ }; const TTCN_Typedescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_descr_ = { "@RANAP-IEs.RequestedMBMSIPMulticastAddressandAPNRequest", &SEQUENCE_ber_, NULL, NULL, NULL, &RequestedMBMSIPMulticastAddressandAPNRequest_json_, &RequestedMBMSIPMulticastAddressandAPNRequest_oer_, &RequestedMBMSIPMulticastAddressandAPNRequest_per_, &RequestedMBMSIPMulticastAddressandAPNRequest_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TMGI_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TMGI_pLMNidentity_ber_ = { 1u, TMGI_pLMNidentity_tag_ }; // No XER for TMGI_pLMNidentity const int TMGI_pLMNidentity_oer_ext_arr_[0] = {}; const int TMGI_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMGI_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, TMGI_pLMNidentity_oer_ext_arr_, 0, TMGI_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t TMGI_pLMNidentity_descr_ = { "@RANAP-IEs.TMGI.pLMNidentity", &TMGI_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TMGI_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI_pLMNidentity_default_coding(""); const ASN_Tag_t TMGI_serviceID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TMGI_serviceID_ber_ = { 1u, TMGI_serviceID_tag_ }; // No XER for TMGI_serviceID const int TMGI_serviceID_oer_ext_arr_[0] = {}; const int TMGI_serviceID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMGI_serviceID_oer_ = { -1, TRUE, 3, FALSE, 0, 0, TMGI_serviceID_oer_ext_arr_, 0, TMGI_serviceID_oer_p_}; static Per_Integer_Constraint TMGI_serviceID_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(3), FALSE); const ASN_PERdescriptor_t TMGI_serviceID_per_ = { &TMGI_serviceID_per_cons_ }; const TTCN_Typedescriptor_t TMGI_serviceID_descr_ = { "@RANAP-IEs.TMGI.serviceID", &TMGI_serviceID_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TMGI_serviceID_oer_, &TMGI_serviceID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI_serviceID_default_coding(""); // No XER for TMGI const TTCN_JSONdescriptor_t TMGI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TMGI_oer_ext_arr_[0] = {}; const int TMGI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TMGI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TMGI_oer_ext_arr_, 3, TMGI_oer_p_}; static const Per_Constraint TMGI_per_cons_; const ASN_PERdescriptor_t TMGI_per_ = { &TMGI_per_cons_ }; const TTCN_Typedescriptor_t TMGI_descr_ = { "@RANAP-IEs.TMGI", &SEQUENCE_ber_, NULL, NULL, NULL, &TMGI_json_, &TMGI_oer_, &TMGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst46", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst46.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst46.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst46.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst46.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst46", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst46.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst46_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_default_coding(""); const ASN_Tag_t TMGI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TMGI_iE__Extensions_ber_ = { 1u, TMGI_iE__Extensions_tag_ }; // No XER for TMGI_iE__Extensions const int TMGI_iE__Extensions_oer_ext_arr_[0] = {}; const int TMGI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMGI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TMGI_iE__Extensions_oer_ext_arr_, 0, TMGI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TMGI_iE__Extensions_descr_ = { "@RANAP-IEs.TMGI.iE-Extensions", &TMGI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_json_, &TMGI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst46_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMGI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TMGI_default_coding(""); const ASN_Tag_t MBMSIPMulticastAddressandAPNlist_tMGI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MBMSIPMulticastAddressandAPNlist_tMGI_ber_ = { 1u, MBMSIPMulticastAddressandAPNlist_tMGI_tag_ }; // No XER for MBMSIPMulticastAddressandAPNlist_tMGI const int MBMSIPMulticastAddressandAPNlist_tMGI_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNlist_tMGI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNlist_tMGI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNlist_tMGI_oer_ext_arr_, 3, MBMSIPMulticastAddressandAPNlist_tMGI_oer_p_}; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNlist_tMGI_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNlist.tMGI", &MBMSIPMulticastAddressandAPNlist_tMGI_ber_, NULL, NULL, NULL, &TMGI_json_, &MBMSIPMulticastAddressandAPNlist_tMGI_oer_, &TMGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNlist_tMGI_default_coding(""); // No XER for IPMulticastAddress const int IPMulticastAddress_oer_ext_arr_[0] = {}; const int IPMulticastAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t IPMulticastAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IPMulticastAddress_oer_ext_arr_, 0, IPMulticastAddress_oer_p_}; static Per_Integer_Constraint IPMulticastAddress_per_cons_(new INTEGER(4), new INTEGER(16), FALSE); const ASN_PERdescriptor_t IPMulticastAddress_per_ = { &IPMulticastAddress_per_cons_ }; const TTCN_Typedescriptor_t IPMulticastAddress_descr_ = { "@RANAP-IEs.IPMulticastAddress", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IPMulticastAddress_oer_, &IPMulticastAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IPMulticastAddress_default_coding(""); const ASN_Tag_t MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_ber_ = { 1u, MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_tag_ }; // No XER for MBMSIPMulticastAddressandAPNlist_iPMulticastAddress const int MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_ext_arr_, 0, MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_p_}; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNlist.iPMulticastAddress", &MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_oer_, &IPMulticastAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNlist_iPMulticastAddress_default_coding(""); const ASN_Tag_t MBMSIPMulticastAddressandAPNlist_aPN_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t MBMSIPMulticastAddressandAPNlist_aPN_ber_ = { 1u, MBMSIPMulticastAddressandAPNlist_aPN_tag_ }; // No XER for MBMSIPMulticastAddressandAPNlist_aPN const int MBMSIPMulticastAddressandAPNlist_aPN_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNlist_aPN_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNlist_aPN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNlist_aPN_oer_ext_arr_, 0, MBMSIPMulticastAddressandAPNlist_aPN_oer_p_}; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNlist_aPN_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNlist.aPN", &MBMSIPMulticastAddressandAPNlist_aPN_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MBMSIPMulticastAddressandAPNlist_aPN_oer_, &APN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNlist_aPN_default_coding(""); // No XER for MBMSIPMulticastAddressandAPNlist const TTCN_JSONdescriptor_t MBMSIPMulticastAddressandAPNlist_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSIPMulticastAddressandAPNlist_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNlist_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNlist_oer_ = { -1, TRUE, -1, TRUE, 4, 0, MBMSIPMulticastAddressandAPNlist_oer_ext_arr_, 4, MBMSIPMulticastAddressandAPNlist_oer_p_}; static const Per_Constraint MBMSIPMulticastAddressandAPNlist_per_cons_; const ASN_PERdescriptor_t MBMSIPMulticastAddressandAPNlist_per_ = { &MBMSIPMulticastAddressandAPNlist_per_cons_ }; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNlist_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNlist", &SEQUENCE_ber_, NULL, NULL, NULL, &MBMSIPMulticastAddressandAPNlist_json_, &MBMSIPMulticastAddressandAPNlist_oer_, &MBMSIPMulticastAddressandAPNlist_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst47", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst47.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst47.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst47.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst47.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst47", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst47.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst47_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_default_coding(""); const ASN_Tag_t MBMSIPMulticastAddressandAPNlist_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t MBMSIPMulticastAddressandAPNlist_iE__Extensions_ber_ = { 1u, MBMSIPMulticastAddressandAPNlist_iE__Extensions_tag_ }; // No XER for MBMSIPMulticastAddressandAPNlist_iE__Extensions const int MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_ext_arr_, 0, MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNlist_iE__Extensions_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNlist.iE-Extensions", &MBMSIPMulticastAddressandAPNlist_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_json_, &MBMSIPMulticastAddressandAPNlist_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst47_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNlist_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNlist_default_coding(""); // No XER for RequestedMBMSIPMulticastAddressandAPNRequest_0 const int RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_ext_arr_[0] = {}; const int RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_ = { -1, TRUE, -1, TRUE, 4, 0, RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_ext_arr_, 4, RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_p_}; const TTCN_Typedescriptor_t RequestedMBMSIPMulticastAddressandAPNRequest_0_descr_ = { "@RANAP-IEs.RequestedMBMSIPMulticastAddressandAPNRequest.", &SEQUENCE_ber_, NULL, NULL, NULL, &MBMSIPMulticastAddressandAPNlist_json_, &RequestedMBMSIPMulticastAddressandAPNRequest_0_oer_, &MBMSIPMulticastAddressandAPNlist_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestedMBMSIPMulticastAddressandAPNRequest_0_default_coding(""); UNIVERSAL_CHARSTRING RequestedMBMSIPMulticastAddressandAPNRequest_default_coding(""); const ASN_Tag_t InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_ber_ = { 1u, InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_tag_ }; // No XER for InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest const int InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_ext_arr_[0] = {}; const int InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_ext_arr_, 0, InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_p_}; const TTCN_Typedescriptor_t InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_descr_ = { "@RANAP-IEs.InformationRequested.requestedMBMSIPMulticastAddressandAPNRequest", &InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_ber_, NULL, NULL, NULL, &RequestedMBMSIPMulticastAddressandAPNRequest_json_, &InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_oer_, &RequestedMBMSIPMulticastAddressandAPNRequest_per_, &RequestedMBMSIPMulticastAddressandAPNRequest_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationRequested_requestedMBMSIPMulticastAddressandAPNRequest_default_coding(""); // No XER for RequestedMulticastServiceList const TTCN_JSONdescriptor_t RequestedMulticastServiceList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RequestedMulticastServiceList_oer_ext_arr_[0] = {}; const int RequestedMulticastServiceList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestedMulticastServiceList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedMulticastServiceList_oer_ext_arr_, 0, RequestedMulticastServiceList_oer_p_}; static Per_Integer_Constraint RequestedMulticastServiceList_per_cons_(new INTEGER(1), new INTEGER(128), FALSE); const ASN_PERdescriptor_t RequestedMulticastServiceList_per_ = { &RequestedMulticastServiceList_per_cons_ }; const TTCN_Typedescriptor_t RequestedMulticastServiceList_descr_ = { "@RANAP-IEs.RequestedMulticastServiceList", &SEQUENCE_ber_, NULL, NULL, NULL, &RequestedMulticastServiceList_json_, &RequestedMulticastServiceList_oer_, &RequestedMulticastServiceList_per_, &RequestedMulticastServiceList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RequestedMulticastServiceList_0 const int RequestedMulticastServiceList_0_oer_ext_arr_[0] = {}; const int RequestedMulticastServiceList_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RequestedMulticastServiceList_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedMulticastServiceList_0_oer_ext_arr_, 3, RequestedMulticastServiceList_0_oer_p_}; const TTCN_Typedescriptor_t RequestedMulticastServiceList_0_descr_ = { "@RANAP-IEs.RequestedMulticastServiceList.", &SEQUENCE_ber_, NULL, NULL, NULL, &TMGI_json_, &RequestedMulticastServiceList_0_oer_, &TMGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestedMulticastServiceList_0_default_coding(""); UNIVERSAL_CHARSTRING RequestedMulticastServiceList_default_coding(""); const ASN_Tag_t InformationRequested_requestedMulticastServiceList_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t InformationRequested_requestedMulticastServiceList_ber_ = { 1u, InformationRequested_requestedMulticastServiceList_tag_ }; // No XER for InformationRequested_requestedMulticastServiceList const int InformationRequested_requestedMulticastServiceList_oer_ext_arr_[0] = {}; const int InformationRequested_requestedMulticastServiceList_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequested_requestedMulticastServiceList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InformationRequested_requestedMulticastServiceList_oer_ext_arr_, 0, InformationRequested_requestedMulticastServiceList_oer_p_}; const TTCN_Typedescriptor_t InformationRequested_requestedMulticastServiceList_descr_ = { "@RANAP-IEs.InformationRequested.requestedMulticastServiceList", &InformationRequested_requestedMulticastServiceList_ber_, NULL, NULL, NULL, &RequestedMulticastServiceList_json_, &InformationRequested_requestedMulticastServiceList_oer_, &RequestedMulticastServiceList_per_, &RequestedMulticastServiceList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationRequested_requestedMulticastServiceList_default_coding(""); UNIVERSAL_CHARSTRING InformationRequested_default_coding(""); // No XER for InformationRequestType const TTCN_JSONdescriptor_t InformationRequestType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InformationRequestType_oer_ext_arr_[0] = {}; const int InformationRequestType_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequestType_oer_ = { -1, TRUE, -1, TRUE, 2, 0, InformationRequestType_oer_ext_arr_, 0, InformationRequestType_oer_p_}; static const Per_Constraint InformationRequestType_per_cons_; const ASN_PERdescriptor_t InformationRequestType_per_ = { &InformationRequestType_per_cons_ }; const TTCN_Typedescriptor_t InformationRequestType_descr_ = { "@RANAP-IEs.InformationRequestType", &CHOICE_ber_, NULL, NULL, NULL, &InformationRequestType_json_, &InformationRequestType_oer_, &InformationRequestType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MBMSIPMulticastAddressandAPNRequest const TTCN_JSONdescriptor_t MBMSIPMulticastAddressandAPNRequest_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSIPMulticastAddressandAPNRequest_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNRequest_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNRequest_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNRequest_oer_ext_arr_, 0, MBMSIPMulticastAddressandAPNRequest_oer_p_}; static Per_Integer_Constraint MBMSIPMulticastAddressandAPNRequest_per_cons_(new INTEGER(1), new INTEGER(512), FALSE); const ASN_PERdescriptor_t MBMSIPMulticastAddressandAPNRequest_per_ = { &MBMSIPMulticastAddressandAPNRequest_per_cons_ }; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNRequest_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNRequest", &SEQUENCE_ber_, NULL, NULL, NULL, &MBMSIPMulticastAddressandAPNRequest_json_, &MBMSIPMulticastAddressandAPNRequest_oer_, &MBMSIPMulticastAddressandAPNRequest_per_, &MBMSIPMulticastAddressandAPNRequest_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MBMSIPMulticastAddressandAPNRequest_0 const int MBMSIPMulticastAddressandAPNRequest_0_oer_ext_arr_[0] = {}; const int MBMSIPMulticastAddressandAPNRequest_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t MBMSIPMulticastAddressandAPNRequest_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSIPMulticastAddressandAPNRequest_0_oer_ext_arr_, 3, MBMSIPMulticastAddressandAPNRequest_0_oer_p_}; const TTCN_Typedescriptor_t MBMSIPMulticastAddressandAPNRequest_0_descr_ = { "@RANAP-IEs.MBMSIPMulticastAddressandAPNRequest.", &SEQUENCE_ber_, NULL, NULL, NULL, &TMGI_json_, &MBMSIPMulticastAddressandAPNRequest_0_oer_, &TMGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNRequest_0_default_coding(""); UNIVERSAL_CHARSTRING MBMSIPMulticastAddressandAPNRequest_default_coding(""); const ASN_Tag_t InformationRequestType_mBMSIPMulticastAddressandAPNRequest_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InformationRequestType_mBMSIPMulticastAddressandAPNRequest_ber_ = { 1u, InformationRequestType_mBMSIPMulticastAddressandAPNRequest_tag_ }; // No XER for InformationRequestType_mBMSIPMulticastAddressandAPNRequest const int InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_ext_arr_[0] = {}; const int InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_ext_arr_, 0, InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_p_}; const TTCN_Typedescriptor_t InformationRequestType_mBMSIPMulticastAddressandAPNRequest_descr_ = { "@RANAP-IEs.InformationRequestType.mBMSIPMulticastAddressandAPNRequest", &InformationRequestType_mBMSIPMulticastAddressandAPNRequest_ber_, NULL, NULL, NULL, &MBMSIPMulticastAddressandAPNRequest_json_, &InformationRequestType_mBMSIPMulticastAddressandAPNRequest_oer_, &MBMSIPMulticastAddressandAPNRequest_per_, &MBMSIPMulticastAddressandAPNRequest_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationRequestType_mBMSIPMulticastAddressandAPNRequest_default_coding(""); // No XER for PermanentNAS__UE__ID const TTCN_JSONdescriptor_t PermanentNAS__UE__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PermanentNAS__UE__ID_oer_ext_arr_[0] = {}; const int PermanentNAS__UE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermanentNAS__UE__ID_oer_ = { -1, TRUE, -1, TRUE, 1, 0, PermanentNAS__UE__ID_oer_ext_arr_, 0, PermanentNAS__UE__ID_oer_p_}; static const Per_Constraint PermanentNAS__UE__ID_per_cons_; const ASN_PERdescriptor_t PermanentNAS__UE__ID_per_ = { &PermanentNAS__UE__ID_per_cons_ }; const TTCN_Typedescriptor_t PermanentNAS__UE__ID_descr_ = { "@RANAP-IEs.PermanentNAS-UE-ID", &CHOICE_ber_, NULL, NULL, NULL, &PermanentNAS__UE__ID_json_, &PermanentNAS__UE__ID_oer_, &PermanentNAS__UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t PermanentNAS__UE__ID_iMSI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PermanentNAS__UE__ID_iMSI_ber_ = { 1u, PermanentNAS__UE__ID_iMSI_tag_ }; // No XER for PermanentNAS__UE__ID_iMSI const int PermanentNAS__UE__ID_iMSI_oer_ext_arr_[0] = {}; const int PermanentNAS__UE__ID_iMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermanentNAS__UE__ID_iMSI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PermanentNAS__UE__ID_iMSI_oer_ext_arr_, 0, PermanentNAS__UE__ID_iMSI_oer_p_}; const TTCN_Typedescriptor_t PermanentNAS__UE__ID_iMSI_descr_ = { "@RANAP-IEs.PermanentNAS-UE-ID.iMSI", &PermanentNAS__UE__ID_iMSI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PermanentNAS__UE__ID_iMSI_oer_, &IMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PermanentNAS__UE__ID_iMSI_default_coding(""); UNIVERSAL_CHARSTRING PermanentNAS__UE__ID_default_coding(""); const ASN_Tag_t InformationRequestType_permanentNAS__UE__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t InformationRequestType_permanentNAS__UE__ID_ber_ = { 1u, InformationRequestType_permanentNAS__UE__ID_tag_ }; // No XER for InformationRequestType_permanentNAS__UE__ID const int InformationRequestType_permanentNAS__UE__ID_oer_ext_arr_[0] = {}; const int InformationRequestType_permanentNAS__UE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationRequestType_permanentNAS__UE__ID_oer_ = { -1, TRUE, -1, TRUE, 1, 0, InformationRequestType_permanentNAS__UE__ID_oer_ext_arr_, 0, InformationRequestType_permanentNAS__UE__ID_oer_p_}; const TTCN_Typedescriptor_t InformationRequestType_permanentNAS__UE__ID_descr_ = { "@RANAP-IEs.InformationRequestType.permanentNAS-UE-ID", &InformationRequestType_permanentNAS__UE__ID_ber_, NULL, NULL, NULL, &PermanentNAS__UE__ID_json_, &InformationRequestType_permanentNAS__UE__ID_oer_, &PermanentNAS__UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationRequestType_permanentNAS__UE__ID_default_coding(""); UNIVERSAL_CHARSTRING InformationRequestType_default_coding(""); // No XER for InformationTransferID const int InformationTransferID_oer_ext_arr_[0] = {}; const int InformationTransferID_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationTransferID_oer_ = { 4, FALSE, -1, FALSE, 0, 0, InformationTransferID_oer_ext_arr_, 0, InformationTransferID_oer_p_}; static Per_Integer_Constraint InformationTransferID_per_cons_(new INTEGER(0), new INTEGER(1048575), FALSE); const ASN_PERdescriptor_t InformationTransferID_per_ = { &InformationTransferID_per_cons_ }; const TTCN_Typedescriptor_t InformationTransferID_descr_ = { "@RANAP-IEs.InformationTransferID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &InformationTransferID_oer_, &InformationTransferID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationTransferID_default_coding(""); // No XER for InformationTransferType const TTCN_JSONdescriptor_t InformationTransferType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InformationTransferType_oer_ext_arr_[0] = {}; const int InformationTransferType_oer_p_[0] = {}; const TTCN_OERdescriptor_t InformationTransferType_oer_ = { -1, TRUE, -1, TRUE, 1, 0, InformationTransferType_oer_ext_arr_, 0, InformationTransferType_oer_p_}; static const Per_Constraint InformationTransferType_per_cons_; const ASN_PERdescriptor_t InformationTransferType_per_ = { &InformationTransferType_per_cons_ }; const TTCN_Typedescriptor_t InformationTransferType_descr_ = { "@RANAP-IEs.InformationTransferType", &CHOICE_ber_, NULL, NULL, NULL, &InformationTransferType_json_, &InformationTransferType_oer_, &InformationTransferType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RNCTraceInformation_traceReference_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RNCTraceInformation_traceReference_ber_ = { 1u, RNCTraceInformation_traceReference_tag_ }; // No XER for RNCTraceInformation_traceReference const int RNCTraceInformation_traceReference_oer_ext_arr_[0] = {}; const int RNCTraceInformation_traceReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNCTraceInformation_traceReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNCTraceInformation_traceReference_oer_ext_arr_, 0, RNCTraceInformation_traceReference_oer_p_}; const TTCN_Typedescriptor_t RNCTraceInformation_traceReference_descr_ = { "@RANAP-IEs.RNCTraceInformation.traceReference", &RNCTraceInformation_traceReference_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RNCTraceInformation_traceReference_oer_, &TraceReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNCTraceInformation_traceReference_default_coding(""); const ASN_Tag_t RNCTraceInformation_traceActivationIndicator_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RNCTraceInformation_traceActivationIndicator_ber_ = { 1u, RNCTraceInformation_traceActivationIndicator_tag_ }; // No XER for RNCTraceInformation_traceActivationIndicator const TTCN_JSONdescriptor_t RNCTraceInformation_traceActivationIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RNCTraceInformation_traceActivationIndicator_oer_ext_arr_[0] = {}; const int RNCTraceInformation_traceActivationIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNCTraceInformation_traceActivationIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNCTraceInformation_traceActivationIndicator_oer_ext_arr_, 0, RNCTraceInformation_traceActivationIndicator_oer_p_}; static const Per_Constraint RNCTraceInformation_traceActivationIndicator_per_cons_; const ASN_PERdescriptor_t RNCTraceInformation_traceActivationIndicator_per_ = { &RNCTraceInformation_traceActivationIndicator_per_cons_ }; const TTCN_Typedescriptor_t RNCTraceInformation_traceActivationIndicator_descr_ = { "@RANAP-IEs.RNCTraceInformation.traceActivationIndicator", &RNCTraceInformation_traceActivationIndicator_ber_, NULL, NULL, NULL, &RNCTraceInformation_traceActivationIndicator_json_, &RNCTraceInformation_traceActivationIndicator_oer_, &RNCTraceInformation_traceActivationIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNCTraceInformation_traceActivationIndicator_default_coding(""); // No XER for RNCTraceInformation const TTCN_JSONdescriptor_t RNCTraceInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RNCTraceInformation_oer_ext_arr_[0] = {}; const int RNCTraceInformation_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RNCTraceInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNCTraceInformation_oer_ext_arr_, 4, RNCTraceInformation_oer_p_}; static const Per_Constraint RNCTraceInformation_per_cons_; const ASN_PERdescriptor_t RNCTraceInformation_per_ = { &RNCTraceInformation_per_cons_ }; const TTCN_Typedescriptor_t RNCTraceInformation_descr_ = { "@RANAP-IEs.RNCTraceInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &RNCTraceInformation_json_, &RNCTraceInformation_oer_, &RNCTraceInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RNCTraceInformation_equipmentsToBeTraced_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RNCTraceInformation_equipmentsToBeTraced_ber_ = { 1u, RNCTraceInformation_equipmentsToBeTraced_tag_ }; // No XER for RNCTraceInformation_equipmentsToBeTraced const int RNCTraceInformation_equipmentsToBeTraced_oer_ext_arr_[0] = {}; const int RNCTraceInformation_equipmentsToBeTraced_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNCTraceInformation_equipmentsToBeTraced_oer_ = { -1, TRUE, -1, TRUE, 4, 0, RNCTraceInformation_equipmentsToBeTraced_oer_ext_arr_, 0, RNCTraceInformation_equipmentsToBeTraced_oer_p_}; const TTCN_Typedescriptor_t RNCTraceInformation_equipmentsToBeTraced_descr_ = { "@RANAP-IEs.RNCTraceInformation.equipmentsToBeTraced", &RNCTraceInformation_equipmentsToBeTraced_ber_, NULL, NULL, NULL, &EquipmentsToBeTraced_json_, &RNCTraceInformation_equipmentsToBeTraced_oer_, &EquipmentsToBeTraced_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNCTraceInformation_equipmentsToBeTraced_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst48", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst49.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst49.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst49.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RNCTraceInformation__ExtIEs_1_Extension const int RNCTraceInformation__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int RNCTraceInformation__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNCTraceInformation__ExtIEs_1_Extension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, RNCTraceInformation__ExtIEs_1_Extension_oer_ext_arr_, 0, RNCTraceInformation__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t RNCTraceInformation__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.RNCTraceInformation-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RNCTraceInformation__ExtIEs_1_Extension_oer_, &TraceRecordingSessionReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_RNCTraceInformation__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& RNCTraceInformation__ExtIEs_1_criticality = const_RNCTraceInformation__ExtIEs_1_criticality; INTEGER const_RNCTraceInformation__ExtIEs_1_id; const INTEGER& RNCTraceInformation__ExtIEs_1_id = const_RNCTraceInformation__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_RNCTraceInformation__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& RNCTraceInformation__ExtIEs_1_presence = const_RNCTraceInformation__ExtIEs_1_presence; RANAP__CommonDataTypes::Criticality const_RNCTraceInformation__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& RNCTraceInformation__ExtIEs_2_criticality = const_RNCTraceInformation__ExtIEs_2_criticality; INTEGER const_RNCTraceInformation__ExtIEs_2_id; const INTEGER& RNCTraceInformation__ExtIEs_2_id = const_RNCTraceInformation__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_RNCTraceInformation__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& RNCTraceInformation__ExtIEs_2_presence = const_RNCTraceInformation__ExtIEs_2_presence; RANAP__CommonDataTypes::Criticality const_RNCTraceInformation__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& RNCTraceInformation__ExtIEs_3_criticality = const_RNCTraceInformation__ExtIEs_3_criticality; INTEGER const_RNCTraceInformation__ExtIEs_3_id; const INTEGER& RNCTraceInformation__ExtIEs_3_id = const_RNCTraceInformation__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_RNCTraceInformation__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& RNCTraceInformation__ExtIEs_3_presence = const_RNCTraceInformation__ExtIEs_3_presence; const ASN_Tag_t UTRAN__CellID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UTRAN__CellID_pLMNidentity_ber_ = { 1u, UTRAN__CellID_pLMNidentity_tag_ }; // No XER for UTRAN__CellID_pLMNidentity const int UTRAN__CellID_pLMNidentity_oer_ext_arr_[0] = {}; const int UTRAN__CellID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t UTRAN__CellID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, UTRAN__CellID_pLMNidentity_oer_ext_arr_, 0, UTRAN__CellID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t UTRAN__CellID_pLMNidentity_descr_ = { "@RANAP-IEs.UTRAN-CellID.pLMNidentity", &UTRAN__CellID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UTRAN__CellID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRAN__CellID_pLMNidentity_default_coding(""); const ASN_Tag_t UTRAN__CellID_cellID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UTRAN__CellID_cellID_ber_ = { 1u, UTRAN__CellID_cellID_tag_ }; // No XER for UTRAN__CellID_cellID const int UTRAN__CellID_cellID_oer_ext_arr_[0] = {}; const int UTRAN__CellID_cellID_oer_p_[0] = {}; const TTCN_OERdescriptor_t UTRAN__CellID_cellID_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UTRAN__CellID_cellID_oer_ext_arr_, 0, UTRAN__CellID_cellID_oer_p_}; const TTCN_Typedescriptor_t UTRAN__CellID_cellID_descr_ = { "@RANAP-IEs.UTRAN-CellID.cellID", &UTRAN__CellID_cellID_ber_, NULL, NULL, NULL, &INTEGER_json_, &UTRAN__CellID_cellID_oer_, &TargetCellId_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRAN__CellID_cellID_default_coding(""); // No XER for UTRAN__CellID const TTCN_JSONdescriptor_t UTRAN__CellID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UTRAN__CellID_oer_ext_arr_[0] = {}; const int UTRAN__CellID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t UTRAN__CellID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UTRAN__CellID_oer_ext_arr_, 3, UTRAN__CellID_oer_p_}; static const Per_Constraint UTRAN__CellID_per_cons_; const ASN_PERdescriptor_t UTRAN__CellID_per_ = { &UTRAN__CellID_per_cons_ }; const TTCN_Typedescriptor_t UTRAN__CellID_descr_ = { "@RANAP-IEs.UTRAN-CellID", &SEQUENCE_ber_, NULL, NULL, NULL, &UTRAN__CellID_json_, &UTRAN__CellID_oer_, &UTRAN__CellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst49", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst48.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst48.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst48.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst48.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst48", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst49.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst48_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_default_coding(""); const ASN_Tag_t UTRAN__CellID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UTRAN__CellID_iE__Extensions_ber_ = { 1u, UTRAN__CellID_iE__Extensions_tag_ }; // No XER for UTRAN__CellID_iE__Extensions const int UTRAN__CellID_iE__Extensions_oer_ext_arr_[0] = {}; const int UTRAN__CellID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UTRAN__CellID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UTRAN__CellID_iE__Extensions_oer_ext_arr_, 0, UTRAN__CellID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t UTRAN__CellID_iE__Extensions_descr_ = { "@RANAP-IEs.UTRAN-CellID.iE-Extensions", &UTRAN__CellID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_json_, &UTRAN__CellID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst49_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UTRAN__CellID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING UTRAN__CellID_default_coding(""); // No XER for RNCTraceInformation__ExtIEs_4_Extension const int RNCTraceInformation__ExtIEs_4_Extension_oer_ext_arr_[0] = {}; const int RNCTraceInformation__ExtIEs_4_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RNCTraceInformation__ExtIEs_4_Extension_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNCTraceInformation__ExtIEs_4_Extension_oer_ext_arr_, 3, RNCTraceInformation__ExtIEs_4_Extension_oer_p_}; const TTCN_Typedescriptor_t RNCTraceInformation__ExtIEs_4_Extension_descr_ = { "@RANAP-IEs.RNCTraceInformation-ExtIEs.4.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &UTRAN__CellID_json_, &RNCTraceInformation__ExtIEs_4_Extension_oer_, &UTRAN__CellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_RNCTraceInformation__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& RNCTraceInformation__ExtIEs_4_criticality = const_RNCTraceInformation__ExtIEs_4_criticality; INTEGER const_RNCTraceInformation__ExtIEs_4_id; const INTEGER& RNCTraceInformation__ExtIEs_4_id = const_RNCTraceInformation__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_RNCTraceInformation__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& RNCTraceInformation__ExtIEs_4_presence = const_RNCTraceInformation__ExtIEs_4_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst49.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst49", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst48.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst49_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_default_coding(""); const ASN_Tag_t RNCTraceInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t RNCTraceInformation_iE__Extensions_ber_ = { 1u, RNCTraceInformation_iE__Extensions_tag_ }; // No XER for RNCTraceInformation_iE__Extensions const int RNCTraceInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int RNCTraceInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNCTraceInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNCTraceInformation_iE__Extensions_oer_ext_arr_, 0, RNCTraceInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RNCTraceInformation_iE__Extensions_descr_ = { "@RANAP-IEs.RNCTraceInformation.iE-Extensions", &RNCTraceInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_json_, &RNCTraceInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst48_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNCTraceInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RNCTraceInformation_default_coding(""); const ASN_Tag_t InformationTransferType_rNCTraceInformation_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InformationTransferType_rNCTraceInformation_ber_ = { 1u, InformationTransferType_rNCTraceInformation_tag_ }; // No XER for InformationTransferType_rNCTraceInformation const int InformationTransferType_rNCTraceInformation_oer_ext_arr_[0] = {}; const int InformationTransferType_rNCTraceInformation_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t InformationTransferType_rNCTraceInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InformationTransferType_rNCTraceInformation_oer_ext_arr_, 4, InformationTransferType_rNCTraceInformation_oer_p_}; const TTCN_Typedescriptor_t InformationTransferType_rNCTraceInformation_descr_ = { "@RANAP-IEs.InformationTransferType.rNCTraceInformation", &InformationTransferType_rNCTraceInformation_ber_, NULL, NULL, NULL, &RNCTraceInformation_json_, &InformationTransferType_rNCTraceInformation_oer_, &RNCTraceInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InformationTransferType_rNCTraceInformation_default_coding(""); UNIVERSAL_CHARSTRING InformationTransferType_default_coding(""); // No XER for PermittedIntegrityProtectionAlgorithms const TTCN_JSONdescriptor_t PermittedIntegrityProtectionAlgorithms_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PermittedIntegrityProtectionAlgorithms_oer_ext_arr_[0] = {}; const int PermittedIntegrityProtectionAlgorithms_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermittedIntegrityProtectionAlgorithms_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PermittedIntegrityProtectionAlgorithms_oer_ext_arr_, 0, PermittedIntegrityProtectionAlgorithms_oer_p_}; static Per_Integer_Constraint PermittedIntegrityProtectionAlgorithms_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t PermittedIntegrityProtectionAlgorithms_per_ = { &PermittedIntegrityProtectionAlgorithms_per_cons_ }; const TTCN_Typedescriptor_t PermittedIntegrityProtectionAlgorithms_descr_ = { "@RANAP-IEs.PermittedIntegrityProtectionAlgorithms", &SEQUENCE_ber_, NULL, NULL, NULL, &PermittedIntegrityProtectionAlgorithms_json_, &PermittedIntegrityProtectionAlgorithms_oer_, &PermittedIntegrityProtectionAlgorithms_per_, &PermittedIntegrityProtectionAlgorithms_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PermittedIntegrityProtectionAlgorithms_0 const int PermittedIntegrityProtectionAlgorithms_0_oer_ext_arr_[0] = {}; const int PermittedIntegrityProtectionAlgorithms_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t PermittedIntegrityProtectionAlgorithms_0_oer_ = { 1, FALSE, -1, FALSE, 0, 0, PermittedIntegrityProtectionAlgorithms_0_oer_ext_arr_, 0, PermittedIntegrityProtectionAlgorithms_0_oer_p_}; const TTCN_Typedescriptor_t PermittedIntegrityProtectionAlgorithms_0_descr_ = { "@RANAP-IEs.PermittedIntegrityProtectionAlgorithms.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &PermittedIntegrityProtectionAlgorithms_0_oer_, &IntegrityProtectionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PermittedIntegrityProtectionAlgorithms_0_default_coding(""); UNIVERSAL_CHARSTRING PermittedIntegrityProtectionAlgorithms_default_coding(""); const ASN_Tag_t IntegrityProtectionInformation_permittedAlgorithms_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IntegrityProtectionInformation_permittedAlgorithms_ber_ = { 1u, IntegrityProtectionInformation_permittedAlgorithms_tag_ }; // No XER for IntegrityProtectionInformation_permittedAlgorithms const int IntegrityProtectionInformation_permittedAlgorithms_oer_ext_arr_[0] = {}; const int IntegrityProtectionInformation_permittedAlgorithms_oer_p_[0] = {}; const TTCN_OERdescriptor_t IntegrityProtectionInformation_permittedAlgorithms_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IntegrityProtectionInformation_permittedAlgorithms_oer_ext_arr_, 0, IntegrityProtectionInformation_permittedAlgorithms_oer_p_}; const TTCN_Typedescriptor_t IntegrityProtectionInformation_permittedAlgorithms_descr_ = { "@RANAP-IEs.IntegrityProtectionInformation.permittedAlgorithms", &IntegrityProtectionInformation_permittedAlgorithms_ber_, NULL, NULL, NULL, &PermittedIntegrityProtectionAlgorithms_json_, &IntegrityProtectionInformation_permittedAlgorithms_oer_, &PermittedIntegrityProtectionAlgorithms_per_, &PermittedIntegrityProtectionAlgorithms_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IntegrityProtectionInformation_permittedAlgorithms_default_coding(""); // No XER for IntegrityProtectionKey const int IntegrityProtectionKey_oer_ext_arr_[0] = {}; const int IntegrityProtectionKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t IntegrityProtectionKey_oer_ = { -1, TRUE, 128, FALSE, 0, 0, IntegrityProtectionKey_oer_ext_arr_, 0, IntegrityProtectionKey_oer_p_}; static Per_Integer_Constraint IntegrityProtectionKey_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(128), FALSE); static Per_BitString_Constraint IntegrityProtectionKey_per_cons_(FALSE, &IntegrityProtectionKey_size_per_cons_); const ASN_PERdescriptor_t IntegrityProtectionKey_per_ = { &IntegrityProtectionKey_per_cons_ }; const TTCN_Typedescriptor_t IntegrityProtectionKey_descr_ = { "@RANAP-IEs.IntegrityProtectionKey", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &IntegrityProtectionKey_oer_, &IntegrityProtectionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IntegrityProtectionKey_default_coding(""); const ASN_Tag_t IntegrityProtectionInformation_key_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IntegrityProtectionInformation_key_ber_ = { 1u, IntegrityProtectionInformation_key_tag_ }; // No XER for IntegrityProtectionInformation_key const int IntegrityProtectionInformation_key_oer_ext_arr_[0] = {}; const int IntegrityProtectionInformation_key_oer_p_[0] = {}; const TTCN_OERdescriptor_t IntegrityProtectionInformation_key_oer_ = { -1, TRUE, 128, FALSE, 0, 0, IntegrityProtectionInformation_key_oer_ext_arr_, 0, IntegrityProtectionInformation_key_oer_p_}; const TTCN_Typedescriptor_t IntegrityProtectionInformation_key_descr_ = { "@RANAP-IEs.IntegrityProtectionInformation.key", &IntegrityProtectionInformation_key_ber_, NULL, NULL, NULL, &BITSTRING_json_, &IntegrityProtectionInformation_key_oer_, &IntegrityProtectionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IntegrityProtectionInformation_key_default_coding(""); // No XER for IntegrityProtectionInformation const TTCN_JSONdescriptor_t IntegrityProtectionInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IntegrityProtectionInformation_oer_ext_arr_[0] = {}; const int IntegrityProtectionInformation_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t IntegrityProtectionInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IntegrityProtectionInformation_oer_ext_arr_, 3, IntegrityProtectionInformation_oer_p_}; static const Per_Constraint IntegrityProtectionInformation_per_cons_; const ASN_PERdescriptor_t IntegrityProtectionInformation_per_ = { &IntegrityProtectionInformation_per_cons_ }; const TTCN_Typedescriptor_t IntegrityProtectionInformation_descr_ = { "@RANAP-IEs.IntegrityProtectionInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &IntegrityProtectionInformation_json_, &IntegrityProtectionInformation_oer_, &IntegrityProtectionInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst50", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst50.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst50.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst50.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst50.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst50", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst50.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst50_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_default_coding(""); const ASN_Tag_t IntegrityProtectionInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t IntegrityProtectionInformation_iE__Extensions_ber_ = { 1u, IntegrityProtectionInformation_iE__Extensions_tag_ }; // No XER for IntegrityProtectionInformation_iE__Extensions const int IntegrityProtectionInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int IntegrityProtectionInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t IntegrityProtectionInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IntegrityProtectionInformation_iE__Extensions_oer_ext_arr_, 0, IntegrityProtectionInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t IntegrityProtectionInformation_iE__Extensions_descr_ = { "@RANAP-IEs.IntegrityProtectionInformation.iE-Extensions", &IntegrityProtectionInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_json_, &IntegrityProtectionInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst50_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IntegrityProtectionInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING IntegrityProtectionInformation_default_coding(""); // No XER for InterSystemInformationTransferType const TTCN_JSONdescriptor_t InterSystemInformationTransferType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InterSystemInformationTransferType_oer_ext_arr_[0] = {}; const int InterSystemInformationTransferType_oer_p_[0] = {}; const TTCN_OERdescriptor_t InterSystemInformationTransferType_oer_ = { -1, TRUE, -1, TRUE, 1, 0, InterSystemInformationTransferType_oer_ext_arr_, 0, InterSystemInformationTransferType_oer_p_}; static const Per_Constraint InterSystemInformationTransferType_per_cons_; const ASN_PERdescriptor_t InterSystemInformationTransferType_per_ = { &InterSystemInformationTransferType_per_cons_ }; const TTCN_Typedescriptor_t InterSystemInformationTransferType_descr_ = { "@RANAP-IEs.InterSystemInformationTransferType", &CHOICE_ber_, NULL, NULL, NULL, &InterSystemInformationTransferType_json_, &InterSystemInformationTransferType_oer_, &InterSystemInformationTransferType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const TTCN_Typedescriptor_t& RIMInformation_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING RIMInformation_default_coding(""); const ASN_Tag_t RIM__Transfer_rIMInformation_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RIM__Transfer_rIMInformation_ber_ = { 1u, RIM__Transfer_rIMInformation_tag_ }; // No XER for RIM__Transfer_rIMInformation const int RIM__Transfer_rIMInformation_oer_ext_arr_[0] = {}; const int RIM__Transfer_rIMInformation_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Transfer_rIMInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIM__Transfer_rIMInformation_oer_ext_arr_, 0, RIM__Transfer_rIMInformation_oer_p_}; const TTCN_Typedescriptor_t RIM__Transfer_rIMInformation_descr_ = { "@RANAP-IEs.RIM-Transfer.rIMInformation", &RIM__Transfer_rIMInformation_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RIM__Transfer_rIMInformation_oer_, &OCTETSTRING_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Transfer_rIMInformation_default_coding(""); // No XER for RIM__Transfer const TTCN_JSONdescriptor_t RIM__Transfer_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RIM__Transfer_oer_ext_arr_[0] = {}; const int RIM__Transfer_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RIM__Transfer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIM__Transfer_oer_ext_arr_, 3, RIM__Transfer_oer_p_}; static const Per_Constraint RIM__Transfer_per_cons_; const ASN_PERdescriptor_t RIM__Transfer_per_ = { &RIM__Transfer_per_cons_ }; const TTCN_Typedescriptor_t RIM__Transfer_descr_ = { "@RANAP-IEs.RIM-Transfer", &SEQUENCE_ber_, NULL, NULL, NULL, &RIM__Transfer_json_, &RIM__Transfer_oer_, &RIM__Transfer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RIMRoutingAddress const TTCN_JSONdescriptor_t RIMRoutingAddress_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RIMRoutingAddress_oer_ext_arr_[0] = {}; const int RIMRoutingAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIMRoutingAddress_oer_ = { -1, TRUE, -1, TRUE, 2, 0, RIMRoutingAddress_oer_ext_arr_, 0, RIMRoutingAddress_oer_p_}; static const Per_Constraint RIMRoutingAddress_per_cons_; const ASN_PERdescriptor_t RIMRoutingAddress_per_ = { &RIMRoutingAddress_per_cons_ }; const TTCN_Typedescriptor_t RIMRoutingAddress_descr_ = { "@RANAP-IEs.RIMRoutingAddress", &CHOICE_ber_, NULL, NULL, NULL, &RIMRoutingAddress_json_, &RIMRoutingAddress_oer_, &RIMRoutingAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TargetRNC__ID_lAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TargetRNC__ID_lAI_ber_ = { 1u, TargetRNC__ID_lAI_tag_ }; // No XER for TargetRNC__ID_lAI const int TargetRNC__ID_lAI_oer_ext_arr_[0] = {}; const int TargetRNC__ID_lAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TargetRNC__ID_lAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetRNC__ID_lAI_oer_ext_arr_, 3, TargetRNC__ID_lAI_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ID_lAI_descr_ = { "@RANAP-IEs.TargetRNC-ID.lAI", &TargetRNC__ID_lAI_ber_, NULL, NULL, NULL, &LAI_json_, &TargetRNC__ID_lAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ID_lAI_default_coding(""); const ASN_Tag_t TargetRNC__ID_rNC__ID_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TargetRNC__ID_rNC__ID_ber_ = { 1u, TargetRNC__ID_rNC__ID_tag_ }; // No XER for TargetRNC__ID_rNC__ID const int TargetRNC__ID_rNC__ID_oer_ext_arr_[0] = {}; const int TargetRNC__ID_rNC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ID_rNC__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TargetRNC__ID_rNC__ID_oer_ext_arr_, 0, TargetRNC__ID_rNC__ID_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ID_rNC__ID_descr_ = { "@RANAP-IEs.TargetRNC-ID.rNC-ID", &TargetRNC__ID_rNC__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &TargetRNC__ID_rNC__ID_oer_, &RNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ID_rNC__ID_default_coding(""); // No XER for TargetRNC__ID const TTCN_JSONdescriptor_t TargetRNC__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TargetRNC__ID_oer_ext_arr_[0] = {}; const int TargetRNC__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TargetRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetRNC__ID_oer_ext_arr_, 4, TargetRNC__ID_oer_p_}; static const Per_Constraint TargetRNC__ID_per_cons_; const ASN_PERdescriptor_t TargetRNC__ID_per_ = { &TargetRNC__ID_per_cons_ }; const TTCN_Typedescriptor_t TargetRNC__ID_descr_ = { "@RANAP-IEs.TargetRNC-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &TargetRNC__ID_json_, &TargetRNC__ID_oer_, &TargetRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TargetRNC__ID_rAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TargetRNC__ID_rAC_ber_ = { 1u, TargetRNC__ID_rAC_tag_ }; // No XER for TargetRNC__ID_rAC const int TargetRNC__ID_rAC_oer_ext_arr_[0] = {}; const int TargetRNC__ID_rAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ID_rAC_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TargetRNC__ID_rAC_oer_ext_arr_, 0, TargetRNC__ID_rAC_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ID_rAC_descr_ = { "@RANAP-IEs.TargetRNC-ID.rAC", &TargetRNC__ID_rAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TargetRNC__ID_rAC_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ID_rAC_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst51", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst51.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst51.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst51.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TargetRNC__ID__ExtIEs_1_Extension const int TargetRNC__ID__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int TargetRNC__ID__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ID__ExtIEs_1_Extension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TargetRNC__ID__ExtIEs_1_Extension_oer_ext_arr_, 0, TargetRNC__ID__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ID__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.TargetRNC-ID-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TargetRNC__ID__ExtIEs_1_Extension_oer_, &ExtendedRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_TargetRNC__ID__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& TargetRNC__ID__ExtIEs_1_criticality = const_TargetRNC__ID__ExtIEs_1_criticality; INTEGER const_TargetRNC__ID__ExtIEs_1_id; const INTEGER& TargetRNC__ID__ExtIEs_1_id = const_TargetRNC__ID__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_TargetRNC__ID__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& TargetRNC__ID__ExtIEs_1_presence = const_TargetRNC__ID__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst51.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst51", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst51.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst51_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_default_coding(""); const ASN_Tag_t TargetRNC__ID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t TargetRNC__ID_iE__Extensions_ber_ = { 1u, TargetRNC__ID_iE__Extensions_tag_ }; // No XER for TargetRNC__ID_iE__Extensions const int TargetRNC__ID_iE__Extensions_oer_ext_arr_[0] = {}; const int TargetRNC__ID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetRNC__ID_iE__Extensions_oer_ext_arr_, 0, TargetRNC__ID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ID_iE__Extensions_descr_ = { "@RANAP-IEs.TargetRNC-ID.iE-Extensions", &TargetRNC__ID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_json_, &TargetRNC__ID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst51_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TargetRNC__ID_default_coding(""); const ASN_Tag_t RIMRoutingAddress_targetRNC__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RIMRoutingAddress_targetRNC__ID_ber_ = { 1u, RIMRoutingAddress_targetRNC__ID_tag_ }; // No XER for RIMRoutingAddress_targetRNC__ID const int RIMRoutingAddress_targetRNC__ID_oer_ext_arr_[0] = {}; const int RIMRoutingAddress_targetRNC__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RIMRoutingAddress_targetRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIMRoutingAddress_targetRNC__ID_oer_ext_arr_, 4, RIMRoutingAddress_targetRNC__ID_oer_p_}; const TTCN_Typedescriptor_t RIMRoutingAddress_targetRNC__ID_descr_ = { "@RANAP-IEs.RIMRoutingAddress.targetRNC-ID", &RIMRoutingAddress_targetRNC__ID_ber_, NULL, NULL, NULL, &TargetRNC__ID_json_, &RIMRoutingAddress_targetRNC__ID_oer_, &TargetRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIMRoutingAddress_targetRNC__ID_default_coding(""); const ASN_Tag_t RIMRoutingAddress_gERAN__Cell__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RIMRoutingAddress_gERAN__Cell__ID_ber_ = { 1u, RIMRoutingAddress_gERAN__Cell__ID_tag_ }; // No XER for RIMRoutingAddress_gERAN__Cell__ID const int RIMRoutingAddress_gERAN__Cell__ID_oer_ext_arr_[0] = {}; const int RIMRoutingAddress_gERAN__Cell__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RIMRoutingAddress_gERAN__Cell__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIMRoutingAddress_gERAN__Cell__ID_oer_ext_arr_, 4, RIMRoutingAddress_gERAN__Cell__ID_oer_p_}; const TTCN_Typedescriptor_t RIMRoutingAddress_gERAN__Cell__ID_descr_ = { "@RANAP-IEs.RIMRoutingAddress.gERAN-Cell-ID", &RIMRoutingAddress_gERAN__Cell__ID_ber_, NULL, NULL, NULL, &GERAN__Cell__ID_json_, &RIMRoutingAddress_gERAN__Cell__ID_oer_, &GERAN__Cell__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIMRoutingAddress_gERAN__Cell__ID_default_coding(""); const ASN_Tag_t TargetENB__ID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TargetENB__ID_pLMNidentity_ber_ = { 1u, TargetENB__ID_pLMNidentity_tag_ }; // No XER for TargetENB__ID_pLMNidentity const int TargetENB__ID_pLMNidentity_oer_ext_arr_[0] = {}; const int TargetENB__ID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetENB__ID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, TargetENB__ID_pLMNidentity_oer_ext_arr_, 0, TargetENB__ID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t TargetENB__ID_pLMNidentity_descr_ = { "@RANAP-IEs.TargetENB-ID.pLMNidentity", &TargetENB__ID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TargetENB__ID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetENB__ID_pLMNidentity_default_coding(""); const ASN_Tag_t TargetENB__ID_eNB__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TargetENB__ID_eNB__ID_ber_ = { 1u, TargetENB__ID_eNB__ID_tag_ }; // No XER for TargetENB__ID_eNB__ID const int TargetENB__ID_eNB__ID_oer_ext_arr_[0] = {}; const int TargetENB__ID_eNB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetENB__ID_eNB__ID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, TargetENB__ID_eNB__ID_oer_ext_arr_, 0, TargetENB__ID_eNB__ID_oer_p_}; const TTCN_Typedescriptor_t TargetENB__ID_eNB__ID_descr_ = { "@RANAP-IEs.TargetENB-ID.eNB-ID", &TargetENB__ID_eNB__ID_ber_, NULL, NULL, NULL, &ENB__ID_json_, &TargetENB__ID_eNB__ID_oer_, &ENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetENB__ID_eNB__ID_default_coding(""); const ASN_Tag_t TAI_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TAI_pLMNidentity_ber_ = { 1u, TAI_pLMNidentity_tag_ }; // No XER for TAI_pLMNidentity const int TAI_pLMNidentity_oer_ext_arr_[0] = {}; const int TAI_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t TAI_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, TAI_pLMNidentity_oer_ext_arr_, 0, TAI_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t TAI_pLMNidentity_descr_ = { "@RANAP-IEs.TAI.pLMNidentity", &TAI_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TAI_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TAI_pLMNidentity_default_coding(""); // No XER for TAC const int TAC_oer_ext_arr_[0] = {}; const int TAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t TAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TAC_oer_ext_arr_, 0, TAC_oer_p_}; static Per_Integer_Constraint TAC_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t TAC_per_ = { &TAC_per_cons_ }; const TTCN_Typedescriptor_t TAC_descr_ = { "@RANAP-IEs.TAC", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TAC_oer_, &TAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TAC_default_coding(""); const ASN_Tag_t TAI_tAC_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TAI_tAC_ber_ = { 1u, TAI_tAC_tag_ }; // No XER for TAI_tAC const int TAI_tAC_oer_ext_arr_[0] = {}; const int TAI_tAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t TAI_tAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TAI_tAC_oer_ext_arr_, 0, TAI_tAC_oer_p_}; const TTCN_Typedescriptor_t TAI_tAC_descr_ = { "@RANAP-IEs.TAI.tAC", &TAI_tAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TAI_tAC_oer_, &TAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TAI_tAC_default_coding(""); // No XER for TAI const TTCN_JSONdescriptor_t TAI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TAI_oer_ext_arr_[0] = {}; const int TAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TAI_oer_ext_arr_, 3, TAI_oer_p_}; static const Per_Constraint TAI_per_cons_; const ASN_PERdescriptor_t TAI_per_ = { &TAI_per_cons_ }; const TTCN_Typedescriptor_t TAI_descr_ = { "@RANAP-IEs.TAI", &SEQUENCE_ber_, NULL, NULL, NULL, &TAI_json_, &TAI_oer_, &TAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst53", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst53.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst53.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst53.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst53.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst53", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst53.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst53_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_default_coding(""); const ASN_Tag_t TAI_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TAI_iE__Extensions_ber_ = { 1u, TAI_iE__Extensions_tag_ }; // No XER for TAI_iE__Extensions const int TAI_iE__Extensions_oer_ext_arr_[0] = {}; const int TAI_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TAI_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TAI_iE__Extensions_oer_ext_arr_, 0, TAI_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TAI_iE__Extensions_descr_ = { "@RANAP-IEs.TAI.iE-Extensions", &TAI_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_json_, &TAI_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst53_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TAI_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TAI_default_coding(""); const ASN_Tag_t TargetENB__ID_selectedTAI_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t TargetENB__ID_selectedTAI_ber_ = { 1u, TargetENB__ID_selectedTAI_tag_ }; // No XER for TargetENB__ID_selectedTAI const int TargetENB__ID_selectedTAI_oer_ext_arr_[0] = {}; const int TargetENB__ID_selectedTAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TargetENB__ID_selectedTAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetENB__ID_selectedTAI_oer_ext_arr_, 3, TargetENB__ID_selectedTAI_oer_p_}; const TTCN_Typedescriptor_t TargetENB__ID_selectedTAI_descr_ = { "@RANAP-IEs.TargetENB-ID.selectedTAI", &TargetENB__ID_selectedTAI_ber_, NULL, NULL, NULL, &TAI_json_, &TargetENB__ID_selectedTAI_oer_, &TAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetENB__ID_selectedTAI_default_coding(""); // No XER for TargetENB__ID const TTCN_JSONdescriptor_t TargetENB__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TargetENB__ID_oer_ext_arr_[0] = {}; const int TargetENB__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TargetENB__ID_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TargetENB__ID_oer_ext_arr_, 4, TargetENB__ID_oer_p_}; static const Per_Constraint TargetENB__ID_per_cons_; const ASN_PERdescriptor_t TargetENB__ID_per_ = { &TargetENB__ID_per_cons_ }; const TTCN_Typedescriptor_t TargetENB__ID_descr_ = { "@RANAP-IEs.TargetENB-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &TargetENB__ID_json_, &TargetENB__ID_oer_, &TargetENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst52", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst52.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst52.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst52.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst52.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst52", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst52.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst52_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_default_coding(""); const ASN_Tag_t TargetENB__ID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TargetENB__ID_iE__Extensions_ber_ = { 1u, TargetENB__ID_iE__Extensions_tag_ }; // No XER for TargetENB__ID_iE__Extensions const int TargetENB__ID_iE__Extensions_oer_ext_arr_[0] = {}; const int TargetENB__ID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetENB__ID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetENB__ID_iE__Extensions_oer_ext_arr_, 0, TargetENB__ID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TargetENB__ID_iE__Extensions_descr_ = { "@RANAP-IEs.TargetENB-ID.iE-Extensions", &TargetENB__ID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_json_, &TargetENB__ID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst52_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetENB__ID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TargetENB__ID_default_coding(""); const ASN_Tag_t RIMRoutingAddress_targeteNB__ID_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RIMRoutingAddress_targeteNB__ID_ber_ = { 1u, RIMRoutingAddress_targeteNB__ID_tag_ }; // No XER for RIMRoutingAddress_targeteNB__ID const int RIMRoutingAddress_targeteNB__ID_oer_ext_arr_[0] = {}; const int RIMRoutingAddress_targeteNB__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RIMRoutingAddress_targeteNB__ID_oer_ = { -1, TRUE, -1, TRUE, 4, 0, RIMRoutingAddress_targeteNB__ID_oer_ext_arr_, 4, RIMRoutingAddress_targeteNB__ID_oer_p_}; const TTCN_Typedescriptor_t RIMRoutingAddress_targeteNB__ID_descr_ = { "@RANAP-IEs.RIMRoutingAddress.targeteNB-ID", &RIMRoutingAddress_targeteNB__ID_ber_, NULL, NULL, NULL, &TargetENB__ID_json_, &RIMRoutingAddress_targeteNB__ID_oer_, &TargetENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIMRoutingAddress_targeteNB__ID_default_coding(""); UNIVERSAL_CHARSTRING RIMRoutingAddress_default_coding(""); const ASN_Tag_t RIM__Transfer_rIMRoutingAddress_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RIM__Transfer_rIMRoutingAddress_ber_ = { 1u, RIM__Transfer_rIMRoutingAddress_tag_ }; // No XER for RIM__Transfer_rIMRoutingAddress const int RIM__Transfer_rIMRoutingAddress_oer_ext_arr_[0] = {}; const int RIM__Transfer_rIMRoutingAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Transfer_rIMRoutingAddress_oer_ = { -1, TRUE, -1, TRUE, 2, 0, RIM__Transfer_rIMRoutingAddress_oer_ext_arr_, 0, RIM__Transfer_rIMRoutingAddress_oer_p_}; const TTCN_Typedescriptor_t RIM__Transfer_rIMRoutingAddress_descr_ = { "@RANAP-IEs.RIM-Transfer.rIMRoutingAddress", &RIM__Transfer_rIMRoutingAddress_ber_, NULL, NULL, NULL, &RIMRoutingAddress_json_, &RIM__Transfer_rIMRoutingAddress_oer_, &RIMRoutingAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Transfer_rIMRoutingAddress_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst54", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst54.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst54.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst54.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst54.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst54", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst54.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst54_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_default_coding(""); const ASN_Tag_t RIM__Transfer_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RIM__Transfer_iE__Extensions_ber_ = { 1u, RIM__Transfer_iE__Extensions_tag_ }; // No XER for RIM__Transfer_iE__Extensions const int RIM__Transfer_iE__Extensions_oer_ext_arr_[0] = {}; const int RIM__Transfer_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RIM__Transfer_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RIM__Transfer_iE__Extensions_oer_ext_arr_, 0, RIM__Transfer_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RIM__Transfer_iE__Extensions_descr_ = { "@RANAP-IEs.RIM-Transfer.iE-Extensions", &RIM__Transfer_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_json_, &RIM__Transfer_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst54_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RIM__Transfer_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RIM__Transfer_default_coding(""); const ASN_Tag_t InterSystemInformationTransferType_rIM__Transfer_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InterSystemInformationTransferType_rIM__Transfer_ber_ = { 1u, InterSystemInformationTransferType_rIM__Transfer_tag_ }; // No XER for InterSystemInformationTransferType_rIM__Transfer const int InterSystemInformationTransferType_rIM__Transfer_oer_ext_arr_[0] = {}; const int InterSystemInformationTransferType_rIM__Transfer_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t InterSystemInformationTransferType_rIM__Transfer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InterSystemInformationTransferType_rIM__Transfer_oer_ext_arr_, 3, InterSystemInformationTransferType_rIM__Transfer_oer_p_}; const TTCN_Typedescriptor_t InterSystemInformationTransferType_rIM__Transfer_descr_ = { "@RANAP-IEs.InterSystemInformationTransferType.rIM-Transfer", &InterSystemInformationTransferType_rIM__Transfer_ber_, NULL, NULL, NULL, &RIM__Transfer_json_, &InterSystemInformationTransferType_rIM__Transfer_oer_, &RIM__Transfer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterSystemInformationTransferType_rIM__Transfer_default_coding(""); UNIVERSAL_CHARSTRING InterSystemInformationTransferType_default_coding(""); // No XER for InterSystemInformation__TransparentContainer const TTCN_JSONdescriptor_t InterSystemInformation__TransparentContainer_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int InterSystemInformation__TransparentContainer_oer_ext_arr_[0] = {}; const int InterSystemInformation__TransparentContainer_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t InterSystemInformation__TransparentContainer_oer_ = { -1, TRUE, -1, TRUE, 3, 0, InterSystemInformation__TransparentContainer_oer_ext_arr_, 3, InterSystemInformation__TransparentContainer_oer_p_}; static const Per_Constraint InterSystemInformation__TransparentContainer_per_cons_; const ASN_PERdescriptor_t InterSystemInformation__TransparentContainer_per_ = { &InterSystemInformation__TransparentContainer_per_cons_ }; const TTCN_Typedescriptor_t InterSystemInformation__TransparentContainer_descr_ = { "@RANAP-IEs.InterSystemInformation-TransparentContainer", &SEQUENCE_ber_, NULL, NULL, NULL, &InterSystemInformation__TransparentContainer_json_, &InterSystemInformation__TransparentContainer_oer_, &InterSystemInformation__TransparentContainer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_ber_ = { 1u, InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_tag_ }; // No XER for InterSystemInformation__TransparentContainer_downlinkCellLoadInformation const int InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_ext_arr_[0] = {}; const int InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_ = { -1, TRUE, -1, TRUE, 5, 0, InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_ext_arr_, 5, InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_p_}; const TTCN_Typedescriptor_t InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_descr_ = { "@RANAP-IEs.InterSystemInformation-TransparentContainer.downlinkCellLoadInformation", &InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_ber_, NULL, NULL, NULL, &CellLoadInformation_json_, &InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_oer_, &CellLoadInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterSystemInformation__TransparentContainer_downlinkCellLoadInformation_default_coding(""); const ASN_Tag_t InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_ber_ = { 1u, InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_tag_ }; // No XER for InterSystemInformation__TransparentContainer_uplinkCellLoadInformation const int InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_ext_arr_[0] = {}; const int InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_ = { -1, TRUE, -1, TRUE, 5, 0, InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_ext_arr_, 5, InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_p_}; const TTCN_Typedescriptor_t InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_descr_ = { "@RANAP-IEs.InterSystemInformation-TransparentContainer.uplinkCellLoadInformation", &InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_ber_, NULL, NULL, NULL, &CellLoadInformation_json_, &InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_oer_, &CellLoadInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterSystemInformation__TransparentContainer_uplinkCellLoadInformation_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst55", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst55.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst55.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst55.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst55.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst55", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst55.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst55_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_default_coding(""); const ASN_Tag_t InterSystemInformation__TransparentContainer_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t InterSystemInformation__TransparentContainer_iE__Extensions_ber_ = { 1u, InterSystemInformation__TransparentContainer_iE__Extensions_tag_ }; // No XER for InterSystemInformation__TransparentContainer_iE__Extensions const int InterSystemInformation__TransparentContainer_iE__Extensions_oer_ext_arr_[0] = {}; const int InterSystemInformation__TransparentContainer_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t InterSystemInformation__TransparentContainer_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, InterSystemInformation__TransparentContainer_iE__Extensions_oer_ext_arr_, 0, InterSystemInformation__TransparentContainer_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t InterSystemInformation__TransparentContainer_iE__Extensions_descr_ = { "@RANAP-IEs.InterSystemInformation-TransparentContainer.iE-Extensions", &InterSystemInformation__TransparentContainer_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_json_, &InterSystemInformation__TransparentContainer_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst55_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING InterSystemInformation__TransparentContainer_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING InterSystemInformation__TransparentContainer_default_coding(""); // No XER for IuSignallingConnectionIdentifier const int IuSignallingConnectionIdentifier_oer_ext_arr_[0] = {}; const int IuSignallingConnectionIdentifier_oer_p_[0] = {}; const TTCN_OERdescriptor_t IuSignallingConnectionIdentifier_oer_ = { -1, TRUE, 24, FALSE, 0, 0, IuSignallingConnectionIdentifier_oer_ext_arr_, 0, IuSignallingConnectionIdentifier_oer_p_}; static Per_Integer_Constraint IuSignallingConnectionIdentifier_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(24), FALSE); static Per_BitString_Constraint IuSignallingConnectionIdentifier_per_cons_(FALSE, &IuSignallingConnectionIdentifier_size_per_cons_); const ASN_PERdescriptor_t IuSignallingConnectionIdentifier_per_ = { &IuSignallingConnectionIdentifier_per_cons_ }; const TTCN_Typedescriptor_t IuSignallingConnectionIdentifier_descr_ = { "@RANAP-IEs.IuSignallingConnectionIdentifier", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &IuSignallingConnectionIdentifier_oer_, &IuSignallingConnectionIdentifier_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IuSignallingConnectionIdentifier_default_coding(""); // No XER for IuTransportAssociation const TTCN_JSONdescriptor_t IuTransportAssociation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IuTransportAssociation_oer_ext_arr_[0] = {}; const int IuTransportAssociation_oer_p_[0] = {}; const TTCN_OERdescriptor_t IuTransportAssociation_oer_ = { -1, TRUE, -1, TRUE, 2, 0, IuTransportAssociation_oer_ext_arr_, 0, IuTransportAssociation_oer_p_}; static const Per_Constraint IuTransportAssociation_per_cons_; const ASN_PERdescriptor_t IuTransportAssociation_per_ = { &IuTransportAssociation_per_cons_ }; const TTCN_Typedescriptor_t IuTransportAssociation_descr_ = { "@RANAP-IEs.IuTransportAssociation", &CHOICE_ber_, NULL, NULL, NULL, &IuTransportAssociation_json_, &IuTransportAssociation_oer_, &IuTransportAssociation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t IuTransportAssociation_gTP__TEI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IuTransportAssociation_gTP__TEI_ber_ = { 1u, IuTransportAssociation_gTP__TEI_tag_ }; // No XER for IuTransportAssociation_gTP__TEI const int IuTransportAssociation_gTP__TEI_oer_ext_arr_[0] = {}; const int IuTransportAssociation_gTP__TEI_oer_p_[0] = {}; const TTCN_OERdescriptor_t IuTransportAssociation_gTP__TEI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, IuTransportAssociation_gTP__TEI_oer_ext_arr_, 0, IuTransportAssociation_gTP__TEI_oer_p_}; const TTCN_Typedescriptor_t IuTransportAssociation_gTP__TEI_descr_ = { "@RANAP-IEs.IuTransportAssociation.gTP-TEI", &IuTransportAssociation_gTP__TEI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IuTransportAssociation_gTP__TEI_oer_, >P__TEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IuTransportAssociation_gTP__TEI_default_coding(""); const ASN_Tag_t IuTransportAssociation_bindingID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IuTransportAssociation_bindingID_ber_ = { 1u, IuTransportAssociation_bindingID_tag_ }; // No XER for IuTransportAssociation_bindingID const int IuTransportAssociation_bindingID_oer_ext_arr_[0] = {}; const int IuTransportAssociation_bindingID_oer_p_[0] = {}; const TTCN_OERdescriptor_t IuTransportAssociation_bindingID_oer_ = { -1, TRUE, 4, FALSE, 0, 0, IuTransportAssociation_bindingID_oer_ext_arr_, 0, IuTransportAssociation_bindingID_oer_p_}; const TTCN_Typedescriptor_t IuTransportAssociation_bindingID_descr_ = { "@RANAP-IEs.IuTransportAssociation.bindingID", &IuTransportAssociation_bindingID_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &IuTransportAssociation_bindingID_oer_, &BindingID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IuTransportAssociation_bindingID_default_coding(""); UNIVERSAL_CHARSTRING IuTransportAssociation_default_coding(""); // No XER for KeyStatus const TTCN_JSONdescriptor_t KeyStatus_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int KeyStatus_oer_ext_arr_[0] = {}; const int KeyStatus_oer_p_[0] = {}; const TTCN_OERdescriptor_t KeyStatus_oer_ = { -1, TRUE, -1, FALSE, 0, 0, KeyStatus_oer_ext_arr_, 0, KeyStatus_oer_p_}; static const Per_Constraint KeyStatus_per_cons_; const ASN_PERdescriptor_t KeyStatus_per_ = { &KeyStatus_per_cons_ }; const TTCN_Typedescriptor_t KeyStatus_descr_ = { "@RANAP-IEs.KeyStatus", &ENUMERATED_ber_, NULL, NULL, NULL, &KeyStatus_json_, &KeyStatus_oer_, &KeyStatus_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING KeyStatus_default_coding(""); // No XER for LA__LIST const TTCN_JSONdescriptor_t LA__LIST_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LA__LIST_oer_ext_arr_[0] = {}; const int LA__LIST_oer_p_[0] = {}; const TTCN_OERdescriptor_t LA__LIST_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LA__LIST_oer_ext_arr_, 0, LA__LIST_oer_p_}; static Per_Integer_Constraint LA__LIST_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t LA__LIST_per_ = { &LA__LIST_per_cons_ }; const TTCN_Typedescriptor_t LA__LIST_descr_ = { "@RANAP-IEs.LA-LIST", &SEQUENCE_ber_, NULL, NULL, NULL, &LA__LIST_json_, &LA__LIST_oer_, &LA__LIST_per_, &LA__LIST_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t LA__LIST_0_lAC_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LA__LIST_0_lAC_ber_ = { 1u, LA__LIST_0_lAC_tag_ }; // No XER for LA__LIST_0_lAC const int LA__LIST_0_lAC_oer_ext_arr_[0] = {}; const int LA__LIST_0_lAC_oer_p_[0] = {}; const TTCN_OERdescriptor_t LA__LIST_0_lAC_oer_ = { -1, TRUE, 2, FALSE, 0, 0, LA__LIST_0_lAC_oer_ext_arr_, 0, LA__LIST_0_lAC_oer_p_}; const TTCN_Typedescriptor_t LA__LIST_0_lAC_descr_ = { "@RANAP-IEs.LA-LIST.SEQUENCE.lAC", &LA__LIST_0_lAC_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LA__LIST_0_lAC_oer_, &LAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LA__LIST_0_lAC_default_coding(""); // No XER for ListOF__SNAs const TTCN_JSONdescriptor_t ListOF__SNAs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ListOF__SNAs_oer_ext_arr_[0] = {}; const int ListOF__SNAs_oer_p_[0] = {}; const TTCN_OERdescriptor_t ListOF__SNAs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ListOF__SNAs_oer_ext_arr_, 0, ListOF__SNAs_oer_p_}; static Per_Integer_Constraint ListOF__SNAs_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t ListOF__SNAs_per_ = { &ListOF__SNAs_per_cons_ }; const TTCN_Typedescriptor_t ListOF__SNAs_descr_ = { "@RANAP-IEs.ListOF-SNAs", &SEQUENCE_ber_, NULL, NULL, NULL, &ListOF__SNAs_json_, &ListOF__SNAs_oer_, &ListOF__SNAs_per_, &ListOF__SNAs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ListOF__SNAs_0 const int ListOF__SNAs_0_oer_ext_arr_[0] = {}; const int ListOF__SNAs_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t ListOF__SNAs_0_oer_ = { 2, FALSE, -1, FALSE, 0, 0, ListOF__SNAs_0_oer_ext_arr_, 0, ListOF__SNAs_0_oer_p_}; const TTCN_Typedescriptor_t ListOF__SNAs_0_descr_ = { "@RANAP-IEs.ListOF-SNAs.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &ListOF__SNAs_0_oer_, &SNAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ListOF__SNAs_0_default_coding(""); UNIVERSAL_CHARSTRING ListOF__SNAs_default_coding(""); const ASN_Tag_t LA__LIST_0_listOF__SNAs_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LA__LIST_0_listOF__SNAs_ber_ = { 1u, LA__LIST_0_listOF__SNAs_tag_ }; // No XER for LA__LIST_0_listOF__SNAs const int LA__LIST_0_listOF__SNAs_oer_ext_arr_[0] = {}; const int LA__LIST_0_listOF__SNAs_oer_p_[0] = {}; const TTCN_OERdescriptor_t LA__LIST_0_listOF__SNAs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LA__LIST_0_listOF__SNAs_oer_ext_arr_, 0, LA__LIST_0_listOF__SNAs_oer_p_}; const TTCN_Typedescriptor_t LA__LIST_0_listOF__SNAs_descr_ = { "@RANAP-IEs.LA-LIST.SEQUENCE.listOF-SNAs", &LA__LIST_0_listOF__SNAs_ber_, NULL, NULL, NULL, &ListOF__SNAs_json_, &LA__LIST_0_listOF__SNAs_oer_, &ListOF__SNAs_per_, &ListOF__SNAs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LA__LIST_0_listOF__SNAs_default_coding(""); // No XER for LA__LIST_0 const TTCN_JSONdescriptor_t LA__LIST_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LA__LIST_0_oer_ext_arr_[0] = {}; const int LA__LIST_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LA__LIST_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, LA__LIST_0_oer_ext_arr_, 3, LA__LIST_0_oer_p_}; static const Per_Constraint LA__LIST_0_per_cons_; const ASN_PERdescriptor_t LA__LIST_0_per_ = { &LA__LIST_0_per_cons_ }; const TTCN_Typedescriptor_t LA__LIST_0_descr_ = { "@RANAP-IEs.LA-LIST.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &LA__LIST_0_json_, &LA__LIST_0_oer_, &LA__LIST_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst56", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst56.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst56.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst56.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst56.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst56", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst56.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst56_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_default_coding(""); const ASN_Tag_t LA__LIST_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LA__LIST_0_iE__Extensions_ber_ = { 1u, LA__LIST_0_iE__Extensions_tag_ }; // No XER for LA__LIST_0_iE__Extensions const int LA__LIST_0_iE__Extensions_oer_ext_arr_[0] = {}; const int LA__LIST_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LA__LIST_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LA__LIST_0_iE__Extensions_oer_ext_arr_, 0, LA__LIST_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LA__LIST_0_iE__Extensions_descr_ = { "@RANAP-IEs.LA-LIST.SEQUENCE.iE-Extensions", &LA__LIST_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_json_, &LA__LIST_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst56_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LA__LIST_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LA__LIST_0_default_coding(""); UNIVERSAL_CHARSTRING LA__LIST_default_coding(""); const ASN_Tag_t LastKnownServiceArea_sAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LastKnownServiceArea_sAI_ber_ = { 1u, LastKnownServiceArea_sAI_tag_ }; // No XER for LastKnownServiceArea_sAI const int LastKnownServiceArea_sAI_oer_ext_arr_[0] = {}; const int LastKnownServiceArea_sAI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t LastKnownServiceArea_sAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LastKnownServiceArea_sAI_oer_ext_arr_, 4, LastKnownServiceArea_sAI_oer_p_}; const TTCN_Typedescriptor_t LastKnownServiceArea_sAI_descr_ = { "@RANAP-IEs.LastKnownServiceArea.sAI", &LastKnownServiceArea_sAI_ber_, NULL, NULL, NULL, &SAI_json_, &LastKnownServiceArea_sAI_oer_, &SAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastKnownServiceArea_sAI_default_coding(""); const ASN_Tag_t LastKnownServiceArea_ageOfSAI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LastKnownServiceArea_ageOfSAI_ber_ = { 1u, LastKnownServiceArea_ageOfSAI_tag_ }; // No XER for LastKnownServiceArea_ageOfSAI const int LastKnownServiceArea_ageOfSAI_oer_ext_arr_[0] = {}; const int LastKnownServiceArea_ageOfSAI_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastKnownServiceArea_ageOfSAI_oer_ = { 2, FALSE, -1, FALSE, 0, 0, LastKnownServiceArea_ageOfSAI_oer_ext_arr_, 0, LastKnownServiceArea_ageOfSAI_oer_p_}; static Per_Integer_Constraint LastKnownServiceArea_ageOfSAI_per_cons_(new INTEGER(0), new INTEGER(32767), FALSE); const ASN_PERdescriptor_t LastKnownServiceArea_ageOfSAI_per_ = { &LastKnownServiceArea_ageOfSAI_per_cons_ }; const TTCN_Typedescriptor_t LastKnownServiceArea_ageOfSAI_descr_ = { "@RANAP-IEs.LastKnownServiceArea.ageOfSAI", &LastKnownServiceArea_ageOfSAI_ber_, NULL, NULL, NULL, &INTEGER_json_, &LastKnownServiceArea_ageOfSAI_oer_, &LastKnownServiceArea_ageOfSAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastKnownServiceArea_ageOfSAI_default_coding(""); // No XER for LastKnownServiceArea const TTCN_JSONdescriptor_t LastKnownServiceArea_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LastKnownServiceArea_oer_ext_arr_[0] = {}; const int LastKnownServiceArea_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LastKnownServiceArea_oer_ = { -1, TRUE, -1, TRUE, 3, 0, LastKnownServiceArea_oer_ext_arr_, 3, LastKnownServiceArea_oer_p_}; static const Per_Constraint LastKnownServiceArea_per_cons_; const ASN_PERdescriptor_t LastKnownServiceArea_per_ = { &LastKnownServiceArea_per_cons_ }; const TTCN_Typedescriptor_t LastKnownServiceArea_descr_ = { "@RANAP-IEs.LastKnownServiceArea", &SEQUENCE_ber_, NULL, NULL, NULL, &LastKnownServiceArea_json_, &LastKnownServiceArea_oer_, &LastKnownServiceArea_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst57", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst57.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst57.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst57.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst57.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst57", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst57.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst57_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_default_coding(""); const ASN_Tag_t LastKnownServiceArea_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LastKnownServiceArea_iE__Extensions_ber_ = { 1u, LastKnownServiceArea_iE__Extensions_tag_ }; // No XER for LastKnownServiceArea_iE__Extensions const int LastKnownServiceArea_iE__Extensions_oer_ext_arr_[0] = {}; const int LastKnownServiceArea_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastKnownServiceArea_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LastKnownServiceArea_iE__Extensions_oer_ext_arr_, 0, LastKnownServiceArea_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LastKnownServiceArea_iE__Extensions_descr_ = { "@RANAP-IEs.LastKnownServiceArea.iE-Extensions", &LastKnownServiceArea_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_json_, &LastKnownServiceArea_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst57_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastKnownServiceArea_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LastKnownServiceArea_default_coding(""); const ASN_Tag_t LastVisitedUTRANCell__Item_uTRAN__CellID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LastVisitedUTRANCell__Item_uTRAN__CellID_ber_ = { 1u, LastVisitedUTRANCell__Item_uTRAN__CellID_tag_ }; // No XER for LastVisitedUTRANCell__Item_uTRAN__CellID const int LastVisitedUTRANCell__Item_uTRAN__CellID_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item_uTRAN__CellID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item_uTRAN__CellID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LastVisitedUTRANCell__Item_uTRAN__CellID_oer_ext_arr_, 3, LastVisitedUTRANCell__Item_uTRAN__CellID_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item_uTRAN__CellID_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item.uTRAN-CellID", &LastVisitedUTRANCell__Item_uTRAN__CellID_ber_, NULL, NULL, NULL, &UTRAN__CellID_json_, &LastVisitedUTRANCell__Item_uTRAN__CellID_oer_, &UTRAN__CellID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastVisitedUTRANCell__Item_uTRAN__CellID_default_coding(""); const ASN_Tag_t LastVisitedUTRANCell__Item_cellType_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LastVisitedUTRANCell__Item_cellType_ber_ = { 1u, LastVisitedUTRANCell__Item_cellType_tag_ }; // No XER for LastVisitedUTRANCell__Item_cellType const int LastVisitedUTRANCell__Item_cellType_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item_cellType_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item_cellType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LastVisitedUTRANCell__Item_cellType_oer_ext_arr_, 0, LastVisitedUTRANCell__Item_cellType_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item_cellType_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item.cellType", &LastVisitedUTRANCell__Item_cellType_ber_, NULL, NULL, NULL, &CellType_json_, &LastVisitedUTRANCell__Item_cellType_oer_, &CellType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastVisitedUTRANCell__Item_cellType_default_coding(""); // No XER for Time__UE__StayedInCell const int Time__UE__StayedInCell_oer_ext_arr_[0] = {}; const int Time__UE__StayedInCell_oer_p_[0] = {}; const TTCN_OERdescriptor_t Time__UE__StayedInCell_oer_ = { 2, FALSE, -1, FALSE, 0, 0, Time__UE__StayedInCell_oer_ext_arr_, 0, Time__UE__StayedInCell_oer_p_}; static Per_Integer_Constraint Time__UE__StayedInCell_per_cons_(new INTEGER(0), new INTEGER(4095), FALSE); const ASN_PERdescriptor_t Time__UE__StayedInCell_per_ = { &Time__UE__StayedInCell_per_cons_ }; const TTCN_Typedescriptor_t Time__UE__StayedInCell_descr_ = { "@RANAP-IEs.Time-UE-StayedInCell", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Time__UE__StayedInCell_oer_, &Time__UE__StayedInCell_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Time__UE__StayedInCell_default_coding(""); const ASN_Tag_t LastVisitedUTRANCell__Item_time__UE__StayedInCell_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LastVisitedUTRANCell__Item_time__UE__StayedInCell_ber_ = { 1u, LastVisitedUTRANCell__Item_time__UE__StayedInCell_tag_ }; // No XER for LastVisitedUTRANCell__Item_time__UE__StayedInCell const int LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_ = { 2, FALSE, -1, FALSE, 0, 0, LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_ext_arr_, 0, LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item_time__UE__StayedInCell_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item.time-UE-StayedInCell", &LastVisitedUTRANCell__Item_time__UE__StayedInCell_ber_, NULL, NULL, NULL, &INTEGER_json_, &LastVisitedUTRANCell__Item_time__UE__StayedInCell_oer_, &Time__UE__StayedInCell_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastVisitedUTRANCell__Item_time__UE__StayedInCell_default_coding(""); // No XER for LastVisitedUTRANCell__Item const TTCN_JSONdescriptor_t LastVisitedUTRANCell__Item_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LastVisitedUTRANCell__Item_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item_oer_ = { -1, TRUE, -1, TRUE, 4, 0, LastVisitedUTRANCell__Item_oer_ext_arr_, 4, LastVisitedUTRANCell__Item_oer_p_}; static const Per_Constraint LastVisitedUTRANCell__Item_per_cons_; const ASN_PERdescriptor_t LastVisitedUTRANCell__Item_per_ = { &LastVisitedUTRANCell__Item_per_cons_ }; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item", &SEQUENCE_ber_, NULL, NULL, NULL, &LastVisitedUTRANCell__Item_json_, &LastVisitedUTRANCell__Item_oer_, &LastVisitedUTRANCell__Item_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst58", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst58.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst58.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst58.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Time__UE__StayedInCell__EnhancedGranularity const int Time__UE__StayedInCell__EnhancedGranularity_oer_ext_arr_[0] = {}; const int Time__UE__StayedInCell__EnhancedGranularity_oer_p_[0] = {}; const TTCN_OERdescriptor_t Time__UE__StayedInCell__EnhancedGranularity_oer_ = { 2, FALSE, -1, FALSE, 0, 0, Time__UE__StayedInCell__EnhancedGranularity_oer_ext_arr_, 0, Time__UE__StayedInCell__EnhancedGranularity_oer_p_}; static Per_Integer_Constraint Time__UE__StayedInCell__EnhancedGranularity_per_cons_(new INTEGER(0), new INTEGER(40950), FALSE); const ASN_PERdescriptor_t Time__UE__StayedInCell__EnhancedGranularity_per_ = { &Time__UE__StayedInCell__EnhancedGranularity_per_cons_ }; const TTCN_Typedescriptor_t Time__UE__StayedInCell__EnhancedGranularity_descr_ = { "@RANAP-IEs.Time-UE-StayedInCell-EnhancedGranularity", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Time__UE__StayedInCell__EnhancedGranularity_oer_, &Time__UE__StayedInCell__EnhancedGranularity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Time__UE__StayedInCell__EnhancedGranularity_default_coding(""); // No XER for LastVisitedUTRANCell__Item__ExtIEs_1_Extension const int LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_ext_arr_, 0, LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &LastVisitedUTRANCell__Item__ExtIEs_1_Extension_oer_, &Time__UE__StayedInCell__EnhancedGranularity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_LastVisitedUTRANCell__Item__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& LastVisitedUTRANCell__Item__ExtIEs_1_criticality = const_LastVisitedUTRANCell__Item__ExtIEs_1_criticality; INTEGER const_LastVisitedUTRANCell__Item__ExtIEs_1_id; const INTEGER& LastVisitedUTRANCell__Item__ExtIEs_1_id = const_LastVisitedUTRANCell__Item__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_LastVisitedUTRANCell__Item__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& LastVisitedUTRANCell__Item__ExtIEs_1_presence = const_LastVisitedUTRANCell__Item__ExtIEs_1_presence; // No XER for LastVisitedUTRANCell__Item__ExtIEs_2_Extension const int LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_ = { -1, TRUE, -1, TRUE, 6, 0, LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_ext_arr_, 0, LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item-ExtIEs.2.&Extension", &CHOICE_ber_, NULL, NULL, NULL, &Cause_json_, &LastVisitedUTRANCell__Item__ExtIEs_2_Extension_oer_, &Cause_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_LastVisitedUTRANCell__Item__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& LastVisitedUTRANCell__Item__ExtIEs_2_criticality = const_LastVisitedUTRANCell__Item__ExtIEs_2_criticality; INTEGER const_LastVisitedUTRANCell__Item__ExtIEs_2_id; const INTEGER& LastVisitedUTRANCell__Item__ExtIEs_2_id = const_LastVisitedUTRANCell__Item__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_LastVisitedUTRANCell__Item__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& LastVisitedUTRANCell__Item__ExtIEs_2_presence = const_LastVisitedUTRANCell__Item__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst58.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst58", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst58.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst58_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_default_coding(""); const ASN_Tag_t LastVisitedUTRANCell__Item_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t LastVisitedUTRANCell__Item_iE__Extensions_ber_ = { 1u, LastVisitedUTRANCell__Item_iE__Extensions_tag_ }; // No XER for LastVisitedUTRANCell__Item_iE__Extensions const int LastVisitedUTRANCell__Item_iE__Extensions_oer_ext_arr_[0] = {}; const int LastVisitedUTRANCell__Item_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LastVisitedUTRANCell__Item_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LastVisitedUTRANCell__Item_iE__Extensions_oer_ext_arr_, 0, LastVisitedUTRANCell__Item_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LastVisitedUTRANCell__Item_iE__Extensions_descr_ = { "@RANAP-IEs.LastVisitedUTRANCell-Item.iE-Extensions", &LastVisitedUTRANCell__Item_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_json_, &LastVisitedUTRANCell__Item_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst58_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LastVisitedUTRANCell__Item_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LastVisitedUTRANCell__Item_default_coding(""); // No XER for LHN__ID const int LHN__ID_oer_ext_arr_[0] = {}; const int LHN__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t LHN__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LHN__ID_oer_ext_arr_, 0, LHN__ID_oer_p_}; static Per_Integer_Constraint LHN__ID_per_cons_(new INTEGER(32), new INTEGER(256), FALSE); const ASN_PERdescriptor_t LHN__ID_per_ = { &LHN__ID_per_cons_ }; const TTCN_Typedescriptor_t LHN__ID_descr_ = { "@RANAP-IEs.LHN-ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LHN__ID_oer_, &LHN__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LHN__ID_default_coding(""); // No XER for RequestedLocationRelatedDataType const TTCN_JSONdescriptor_t RequestedLocationRelatedDataType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RequestedLocationRelatedDataType_oer_ext_arr_[0] = {}; const int RequestedLocationRelatedDataType_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestedLocationRelatedDataType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedLocationRelatedDataType_oer_ext_arr_, 0, RequestedLocationRelatedDataType_oer_p_}; static const Per_Constraint RequestedLocationRelatedDataType_per_cons_; const ASN_PERdescriptor_t RequestedLocationRelatedDataType_per_ = { &RequestedLocationRelatedDataType_per_cons_ }; const TTCN_Typedescriptor_t RequestedLocationRelatedDataType_descr_ = { "@RANAP-IEs.RequestedLocationRelatedDataType", &ENUMERATED_ber_, NULL, NULL, NULL, &RequestedLocationRelatedDataType_json_, &RequestedLocationRelatedDataType_oer_, &RequestedLocationRelatedDataType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestedLocationRelatedDataType_default_coding(""); const ASN_Tag_t LocationRelatedDataRequestType_requestedLocationRelatedDataType_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LocationRelatedDataRequestType_requestedLocationRelatedDataType_ber_ = { 1u, LocationRelatedDataRequestType_requestedLocationRelatedDataType_tag_ }; // No XER for LocationRelatedDataRequestType_requestedLocationRelatedDataType const int LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_ext_arr_[0] = {}; const int LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_ext_arr_, 0, LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_p_}; const TTCN_Typedescriptor_t LocationRelatedDataRequestType_requestedLocationRelatedDataType_descr_ = { "@RANAP-IEs.LocationRelatedDataRequestType.requestedLocationRelatedDataType", &LocationRelatedDataRequestType_requestedLocationRelatedDataType_ber_, NULL, NULL, NULL, &RequestedLocationRelatedDataType_json_, &LocationRelatedDataRequestType_requestedLocationRelatedDataType_oer_, &RequestedLocationRelatedDataType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationRelatedDataRequestType_requestedLocationRelatedDataType_default_coding(""); // No XER for LocationRelatedDataRequestType const TTCN_JSONdescriptor_t LocationRelatedDataRequestType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LocationRelatedDataRequestType_oer_ext_arr_[0] = {}; const int LocationRelatedDataRequestType_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t LocationRelatedDataRequestType_oer_ = { -1, TRUE, -1, TRUE, 2, 0, LocationRelatedDataRequestType_oer_ext_arr_, 2, LocationRelatedDataRequestType_oer_p_}; static const Per_Constraint LocationRelatedDataRequestType_per_cons_; const ASN_PERdescriptor_t LocationRelatedDataRequestType_per_ = { &LocationRelatedDataRequestType_per_cons_ }; const TTCN_Typedescriptor_t LocationRelatedDataRequestType_descr_ = { "@RANAP-IEs.LocationRelatedDataRequestType", &SEQUENCE_ber_, NULL, NULL, NULL, &LocationRelatedDataRequestType_json_, &LocationRelatedDataRequestType_oer_, &LocationRelatedDataRequestType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RequestedGPSAssistanceData const int RequestedGPSAssistanceData_oer_ext_arr_[0] = {}; const int RequestedGPSAssistanceData_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestedGPSAssistanceData_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedGPSAssistanceData_oer_ext_arr_, 0, RequestedGPSAssistanceData_oer_p_}; static Per_Integer_Constraint RequestedGPSAssistanceData_per_cons_(new INTEGER(1), new INTEGER(38), FALSE); const ASN_PERdescriptor_t RequestedGPSAssistanceData_per_ = { &RequestedGPSAssistanceData_per_cons_ }; const TTCN_Typedescriptor_t RequestedGPSAssistanceData_descr_ = { "@RANAP-IEs.RequestedGPSAssistanceData", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RequestedGPSAssistanceData_oer_, &RequestedGPSAssistanceData_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestedGPSAssistanceData_default_coding(""); const ASN_Tag_t LocationRelatedDataRequestType_requestedGPSAssistanceData_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LocationRelatedDataRequestType_requestedGPSAssistanceData_ber_ = { 1u, LocationRelatedDataRequestType_requestedGPSAssistanceData_tag_ }; // No XER for LocationRelatedDataRequestType_requestedGPSAssistanceData const int LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_ext_arr_[0] = {}; const int LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_ext_arr_, 0, LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_p_}; const TTCN_Typedescriptor_t LocationRelatedDataRequestType_requestedGPSAssistanceData_descr_ = { "@RANAP-IEs.LocationRelatedDataRequestType.requestedGPSAssistanceData", &LocationRelatedDataRequestType_requestedGPSAssistanceData_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &LocationRelatedDataRequestType_requestedGPSAssistanceData_oer_, &RequestedGPSAssistanceData_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationRelatedDataRequestType_requestedGPSAssistanceData_default_coding(""); UNIVERSAL_CHARSTRING LocationRelatedDataRequestType_default_coding(""); // No XER for LocationRelatedDataRequestTypeSpecificToGERANIuMode const TTCN_JSONdescriptor_t LocationRelatedDataRequestTypeSpecificToGERANIuMode_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_ext_arr_[0] = {}; const int LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_ext_arr_, 0, LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_p_}; static const Per_Constraint LocationRelatedDataRequestTypeSpecificToGERANIuMode_per_cons_; const ASN_PERdescriptor_t LocationRelatedDataRequestTypeSpecificToGERANIuMode_per_ = { &LocationRelatedDataRequestTypeSpecificToGERANIuMode_per_cons_ }; const TTCN_Typedescriptor_t LocationRelatedDataRequestTypeSpecificToGERANIuMode_descr_ = { "@RANAP-IEs.LocationRelatedDataRequestTypeSpecificToGERANIuMode", &ENUMERATED_ber_, NULL, NULL, NULL, &LocationRelatedDataRequestTypeSpecificToGERANIuMode_json_, &LocationRelatedDataRequestTypeSpecificToGERANIuMode_oer_, &LocationRelatedDataRequestTypeSpecificToGERANIuMode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationRelatedDataRequestTypeSpecificToGERANIuMode_default_coding(""); // No XER for LocationReportingTransferInformation const TTCN_JSONdescriptor_t LocationReportingTransferInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LocationReportingTransferInformation_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_oer_p_[12] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_oer_ = { -1, TRUE, -1, TRUE, 12, 0, LocationReportingTransferInformation_oer_ext_arr_, 12, LocationReportingTransferInformation_oer_p_}; static const Per_Constraint LocationReportingTransferInformation_per_cons_; const ASN_PERdescriptor_t LocationReportingTransferInformation_per_ = { &LocationReportingTransferInformation_per_cons_ }; const TTCN_Typedescriptor_t LocationReportingTransferInformation_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &LocationReportingTransferInformation_json_, &LocationReportingTransferInformation_oer_, &LocationReportingTransferInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for ReportChangeOfSAI const TTCN_JSONdescriptor_t ReportChangeOfSAI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ReportChangeOfSAI_oer_ext_arr_[0] = {}; const int ReportChangeOfSAI_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReportChangeOfSAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReportChangeOfSAI_oer_ext_arr_, 0, ReportChangeOfSAI_oer_p_}; static const Per_Constraint ReportChangeOfSAI_per_cons_; const ASN_PERdescriptor_t ReportChangeOfSAI_per_ = { &ReportChangeOfSAI_per_cons_ }; const TTCN_Typedescriptor_t ReportChangeOfSAI_descr_ = { "@RANAP-IEs.ReportChangeOfSAI", &ENUMERATED_ber_, NULL, NULL, NULL, &ReportChangeOfSAI_json_, &ReportChangeOfSAI_oer_, &ReportChangeOfSAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReportChangeOfSAI_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_reportChangeOfSAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_reportChangeOfSAI_ber_ = { 1u, LocationReportingTransferInformation_reportChangeOfSAI_tag_ }; // No XER for LocationReportingTransferInformation_reportChangeOfSAI const int LocationReportingTransferInformation_reportChangeOfSAI_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_reportChangeOfSAI_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_reportChangeOfSAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_reportChangeOfSAI_oer_ext_arr_, 0, LocationReportingTransferInformation_reportChangeOfSAI_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_reportChangeOfSAI_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.reportChangeOfSAI", &LocationReportingTransferInformation_reportChangeOfSAI_ber_, NULL, NULL, NULL, &ReportChangeOfSAI_json_, &LocationReportingTransferInformation_reportChangeOfSAI_oer_, &ReportChangeOfSAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_reportChangeOfSAI_default_coding(""); // No XER for PeriodicReportingIndicator const TTCN_JSONdescriptor_t PeriodicReportingIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PeriodicReportingIndicator_oer_ext_arr_[0] = {}; const int PeriodicReportingIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t PeriodicReportingIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PeriodicReportingIndicator_oer_ext_arr_, 0, PeriodicReportingIndicator_oer_p_}; static const Per_Constraint PeriodicReportingIndicator_per_cons_; const ASN_PERdescriptor_t PeriodicReportingIndicator_per_ = { &PeriodicReportingIndicator_per_cons_ }; const TTCN_Typedescriptor_t PeriodicReportingIndicator_descr_ = { "@RANAP-IEs.PeriodicReportingIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &PeriodicReportingIndicator_json_, &PeriodicReportingIndicator_oer_, &PeriodicReportingIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PeriodicReportingIndicator_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_periodicReportingIndicator_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_periodicReportingIndicator_ber_ = { 1u, LocationReportingTransferInformation_periodicReportingIndicator_tag_ }; // No XER for LocationReportingTransferInformation_periodicReportingIndicator const int LocationReportingTransferInformation_periodicReportingIndicator_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_periodicReportingIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_periodicReportingIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_periodicReportingIndicator_oer_ext_arr_, 0, LocationReportingTransferInformation_periodicReportingIndicator_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_periodicReportingIndicator_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.periodicReportingIndicator", &LocationReportingTransferInformation_periodicReportingIndicator_ber_, NULL, NULL, NULL, &PeriodicReportingIndicator_json_, &LocationReportingTransferInformation_periodicReportingIndicator_oer_, &PeriodicReportingIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_periodicReportingIndicator_default_coding(""); // No XER for DirectReportingIndicator const TTCN_JSONdescriptor_t DirectReportingIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int DirectReportingIndicator_oer_ext_arr_[0] = {}; const int DirectReportingIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t DirectReportingIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DirectReportingIndicator_oer_ext_arr_, 0, DirectReportingIndicator_oer_p_}; static const Per_Constraint DirectReportingIndicator_per_cons_; const ASN_PERdescriptor_t DirectReportingIndicator_per_ = { &DirectReportingIndicator_per_cons_ }; const TTCN_Typedescriptor_t DirectReportingIndicator_descr_ = { "@RANAP-IEs.DirectReportingIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &DirectReportingIndicator_json_, &DirectReportingIndicator_oer_, &DirectReportingIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING DirectReportingIndicator_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_directReportingIndicator_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_directReportingIndicator_ber_ = { 1u, LocationReportingTransferInformation_directReportingIndicator_tag_ }; // No XER for LocationReportingTransferInformation_directReportingIndicator const int LocationReportingTransferInformation_directReportingIndicator_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_directReportingIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_directReportingIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_directReportingIndicator_oer_ext_arr_, 0, LocationReportingTransferInformation_directReportingIndicator_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_directReportingIndicator_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.directReportingIndicator", &LocationReportingTransferInformation_directReportingIndicator_ber_, NULL, NULL, NULL, &DirectReportingIndicator_json_, &LocationReportingTransferInformation_directReportingIndicator_oer_, &DirectReportingIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_directReportingIndicator_default_coding(""); // No XER for VerticalAccuracyCode const int VerticalAccuracyCode_oer_ext_arr_[0] = {}; const int VerticalAccuracyCode_oer_p_[0] = {}; const TTCN_OERdescriptor_t VerticalAccuracyCode_oer_ = { 1, FALSE, -1, FALSE, 0, 0, VerticalAccuracyCode_oer_ext_arr_, 0, VerticalAccuracyCode_oer_p_}; static Per_Integer_Constraint VerticalAccuracyCode_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t VerticalAccuracyCode_per_ = { &VerticalAccuracyCode_per_cons_ }; const TTCN_Typedescriptor_t VerticalAccuracyCode_descr_ = { "@RANAP-IEs.VerticalAccuracyCode", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &VerticalAccuracyCode_oer_, &VerticalAccuracyCode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VerticalAccuracyCode_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_verticalAccuracyCode_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_verticalAccuracyCode_ber_ = { 1u, LocationReportingTransferInformation_verticalAccuracyCode_tag_ }; // No XER for LocationReportingTransferInformation_verticalAccuracyCode const int LocationReportingTransferInformation_verticalAccuracyCode_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_verticalAccuracyCode_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_verticalAccuracyCode_oer_ = { 1, FALSE, -1, FALSE, 0, 0, LocationReportingTransferInformation_verticalAccuracyCode_oer_ext_arr_, 0, LocationReportingTransferInformation_verticalAccuracyCode_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_verticalAccuracyCode_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.verticalAccuracyCode", &LocationReportingTransferInformation_verticalAccuracyCode_ber_, NULL, NULL, NULL, &INTEGER_json_, &LocationReportingTransferInformation_verticalAccuracyCode_oer_, &VerticalAccuracyCode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_verticalAccuracyCode_default_coding(""); // No XER for PositioningPriority const TTCN_JSONdescriptor_t PositioningPriority_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PositioningPriority_oer_ext_arr_[0] = {}; const int PositioningPriority_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositioningPriority_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PositioningPriority_oer_ext_arr_, 0, PositioningPriority_oer_p_}; static const Per_Constraint PositioningPriority_per_cons_; const ASN_PERdescriptor_t PositioningPriority_per_ = { &PositioningPriority_per_cons_ }; const TTCN_Typedescriptor_t PositioningPriority_descr_ = { "@RANAP-IEs.PositioningPriority", &ENUMERATED_ber_, NULL, NULL, NULL, &PositioningPriority_json_, &PositioningPriority_oer_, &PositioningPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositioningPriority_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_positioningPriorityChangeSAI_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_positioningPriorityChangeSAI_ber_ = { 1u, LocationReportingTransferInformation_positioningPriorityChangeSAI_tag_ }; // No XER for LocationReportingTransferInformation_positioningPriorityChangeSAI const int LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_ext_arr_, 0, LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_positioningPriorityChangeSAI_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.positioningPriorityChangeSAI", &LocationReportingTransferInformation_positioningPriorityChangeSAI_ber_, NULL, NULL, NULL, &PositioningPriority_json_, &LocationReportingTransferInformation_positioningPriorityChangeSAI_oer_, &PositioningPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_positioningPriorityChangeSAI_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_positioningPriorityDirect_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_positioningPriorityDirect_ber_ = { 1u, LocationReportingTransferInformation_positioningPriorityDirect_tag_ }; // No XER for LocationReportingTransferInformation_positioningPriorityDirect const int LocationReportingTransferInformation_positioningPriorityDirect_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_positioningPriorityDirect_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_positioningPriorityDirect_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_positioningPriorityDirect_oer_ext_arr_, 0, LocationReportingTransferInformation_positioningPriorityDirect_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_positioningPriorityDirect_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.positioningPriorityDirect", &LocationReportingTransferInformation_positioningPriorityDirect_ber_, NULL, NULL, NULL, &PositioningPriority_json_, &LocationReportingTransferInformation_positioningPriorityDirect_oer_, &PositioningPriority_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_positioningPriorityDirect_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_clientTypePeriodic_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_clientTypePeriodic_ber_ = { 1u, LocationReportingTransferInformation_clientTypePeriodic_tag_ }; // No XER for LocationReportingTransferInformation_clientTypePeriodic const int LocationReportingTransferInformation_clientTypePeriodic_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_clientTypePeriodic_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_clientTypePeriodic_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_clientTypePeriodic_oer_ext_arr_, 0, LocationReportingTransferInformation_clientTypePeriodic_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_clientTypePeriodic_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.clientTypePeriodic", &LocationReportingTransferInformation_clientTypePeriodic_ber_, NULL, NULL, NULL, &ClientType_json_, &LocationReportingTransferInformation_clientTypePeriodic_oer_, &ClientType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_clientTypePeriodic_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_clientTypeDirect_tag_[] = { { ASN_TAG_CONT, 7u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_clientTypeDirect_ber_ = { 1u, LocationReportingTransferInformation_clientTypeDirect_tag_ }; // No XER for LocationReportingTransferInformation_clientTypeDirect const int LocationReportingTransferInformation_clientTypeDirect_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_clientTypeDirect_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_clientTypeDirect_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_clientTypeDirect_oer_ext_arr_, 0, LocationReportingTransferInformation_clientTypeDirect_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_clientTypeDirect_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.clientTypeDirect", &LocationReportingTransferInformation_clientTypeDirect_ber_, NULL, NULL, NULL, &ClientType_json_, &LocationReportingTransferInformation_clientTypeDirect_oer_, &ClientType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_clientTypeDirect_default_coding(""); // No XER for ResponseTime const TTCN_JSONdescriptor_t ResponseTime_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ResponseTime_oer_ext_arr_[0] = {}; const int ResponseTime_oer_p_[0] = {}; const TTCN_OERdescriptor_t ResponseTime_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ResponseTime_oer_ext_arr_, 0, ResponseTime_oer_p_}; static const Per_Constraint ResponseTime_per_cons_; const ASN_PERdescriptor_t ResponseTime_per_ = { &ResponseTime_per_cons_ }; const TTCN_Typedescriptor_t ResponseTime_descr_ = { "@RANAP-IEs.ResponseTime", &ENUMERATED_ber_, NULL, NULL, NULL, &ResponseTime_json_, &ResponseTime_oer_, &ResponseTime_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ResponseTime_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_responseTime_tag_[] = { { ASN_TAG_CONT, 8u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_responseTime_ber_ = { 1u, LocationReportingTransferInformation_responseTime_tag_ }; // No XER for LocationReportingTransferInformation_responseTime const int LocationReportingTransferInformation_responseTime_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_responseTime_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_responseTime_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_responseTime_oer_ext_arr_, 0, LocationReportingTransferInformation_responseTime_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_responseTime_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.responseTime", &LocationReportingTransferInformation_responseTime_ber_, NULL, NULL, NULL, &ResponseTime_json_, &LocationReportingTransferInformation_responseTime_oer_, &ResponseTime_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_responseTime_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_includeVelocity_tag_[] = { { ASN_TAG_CONT, 9u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_includeVelocity_ber_ = { 1u, LocationReportingTransferInformation_includeVelocity_tag_ }; // No XER for LocationReportingTransferInformation_includeVelocity const int LocationReportingTransferInformation_includeVelocity_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_includeVelocity_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_includeVelocity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_includeVelocity_oer_ext_arr_, 0, LocationReportingTransferInformation_includeVelocity_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_includeVelocity_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.includeVelocity", &LocationReportingTransferInformation_includeVelocity_ber_, NULL, NULL, NULL, &IncludeVelocity_json_, &LocationReportingTransferInformation_includeVelocity_oer_, &IncludeVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_includeVelocity_default_coding(""); const ASN_Tag_t PeriodicLocationInfo_reportingAmount_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PeriodicLocationInfo_reportingAmount_ber_ = { 1u, PeriodicLocationInfo_reportingAmount_tag_ }; // No XER for PeriodicLocationInfo_reportingAmount const int PeriodicLocationInfo_reportingAmount_oer_ext_arr_[0] = {}; const int PeriodicLocationInfo_reportingAmount_oer_p_[0] = {}; const TTCN_OERdescriptor_t PeriodicLocationInfo_reportingAmount_oer_ = { 4, FALSE, -1, FALSE, 0, 0, PeriodicLocationInfo_reportingAmount_oer_ext_arr_, 0, PeriodicLocationInfo_reportingAmount_oer_p_}; static Per_Integer_Constraint PeriodicLocationInfo_reportingAmount_per_cons_(new INTEGER(1), new INTEGER(8639999), TRUE); const ASN_PERdescriptor_t PeriodicLocationInfo_reportingAmount_per_ = { &PeriodicLocationInfo_reportingAmount_per_cons_ }; const TTCN_Typedescriptor_t PeriodicLocationInfo_reportingAmount_descr_ = { "@RANAP-IEs.PeriodicLocationInfo.reportingAmount", &PeriodicLocationInfo_reportingAmount_ber_, NULL, NULL, NULL, &INTEGER_json_, &PeriodicLocationInfo_reportingAmount_oer_, &PeriodicLocationInfo_reportingAmount_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PeriodicLocationInfo_reportingAmount_default_coding(""); const ASN_Tag_t PeriodicLocationInfo_reportingInterval_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t PeriodicLocationInfo_reportingInterval_ber_ = { 1u, PeriodicLocationInfo_reportingInterval_tag_ }; // No XER for PeriodicLocationInfo_reportingInterval const int PeriodicLocationInfo_reportingInterval_oer_ext_arr_[0] = {}; const int PeriodicLocationInfo_reportingInterval_oer_p_[0] = {}; const TTCN_OERdescriptor_t PeriodicLocationInfo_reportingInterval_oer_ = { 4, FALSE, -1, FALSE, 0, 0, PeriodicLocationInfo_reportingInterval_oer_ext_arr_, 0, PeriodicLocationInfo_reportingInterval_oer_p_}; static Per_Integer_Constraint PeriodicLocationInfo_reportingInterval_per_cons_(new INTEGER(1), new INTEGER(8639999), TRUE); const ASN_PERdescriptor_t PeriodicLocationInfo_reportingInterval_per_ = { &PeriodicLocationInfo_reportingInterval_per_cons_ }; const TTCN_Typedescriptor_t PeriodicLocationInfo_reportingInterval_descr_ = { "@RANAP-IEs.PeriodicLocationInfo.reportingInterval", &PeriodicLocationInfo_reportingInterval_ber_, NULL, NULL, NULL, &INTEGER_json_, &PeriodicLocationInfo_reportingInterval_oer_, &PeriodicLocationInfo_reportingInterval_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PeriodicLocationInfo_reportingInterval_default_coding(""); // No XER for PeriodicLocationInfo const TTCN_JSONdescriptor_t PeriodicLocationInfo_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PeriodicLocationInfo_oer_ext_arr_[0] = {}; const int PeriodicLocationInfo_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t PeriodicLocationInfo_oer_ = { -1, TRUE, -1, TRUE, 3, 0, PeriodicLocationInfo_oer_ext_arr_, 3, PeriodicLocationInfo_oer_p_}; static const Per_Constraint PeriodicLocationInfo_per_cons_; const ASN_PERdescriptor_t PeriodicLocationInfo_per_ = { &PeriodicLocationInfo_per_cons_ }; const TTCN_Typedescriptor_t PeriodicLocationInfo_descr_ = { "@RANAP-IEs.PeriodicLocationInfo", &SEQUENCE_ber_, NULL, NULL, NULL, &PeriodicLocationInfo_json_, &PeriodicLocationInfo_oer_, &PeriodicLocationInfo_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst59", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst59.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst59.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst59.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst59.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst59", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst59.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst59_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_default_coding(""); const ASN_Tag_t PeriodicLocationInfo_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t PeriodicLocationInfo_iE__Extensions_ber_ = { 1u, PeriodicLocationInfo_iE__Extensions_tag_ }; // No XER for PeriodicLocationInfo_iE__Extensions const int PeriodicLocationInfo_iE__Extensions_oer_ext_arr_[0] = {}; const int PeriodicLocationInfo_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t PeriodicLocationInfo_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PeriodicLocationInfo_iE__Extensions_oer_ext_arr_, 0, PeriodicLocationInfo_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t PeriodicLocationInfo_iE__Extensions_descr_ = { "@RANAP-IEs.PeriodicLocationInfo.iE-Extensions", &PeriodicLocationInfo_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_json_, &PeriodicLocationInfo_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst59_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PeriodicLocationInfo_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING PeriodicLocationInfo_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_periodicLocationInfo_tag_[] = { { ASN_TAG_CONT, 10u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_periodicLocationInfo_ber_ = { 1u, LocationReportingTransferInformation_periodicLocationInfo_tag_ }; // No XER for LocationReportingTransferInformation_periodicLocationInfo const int LocationReportingTransferInformation_periodicLocationInfo_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_periodicLocationInfo_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_periodicLocationInfo_oer_ = { -1, TRUE, -1, TRUE, 3, 0, LocationReportingTransferInformation_periodicLocationInfo_oer_ext_arr_, 3, LocationReportingTransferInformation_periodicLocationInfo_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_periodicLocationInfo_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.periodicLocationInfo", &LocationReportingTransferInformation_periodicLocationInfo_ber_, NULL, NULL, NULL, &PeriodicLocationInfo_json_, &LocationReportingTransferInformation_periodicLocationInfo_oer_, &PeriodicLocationInfo_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_periodicLocationInfo_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst60", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst60.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst60.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst60.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst60.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst60", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst60.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst60_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_default_coding(""); const ASN_Tag_t LocationReportingTransferInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 11u }}; const ASN_BERdescriptor_t LocationReportingTransferInformation_iE__Extensions_ber_ = { 1u, LocationReportingTransferInformation_iE__Extensions_tag_ }; // No XER for LocationReportingTransferInformation_iE__Extensions const int LocationReportingTransferInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int LocationReportingTransferInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LocationReportingTransferInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LocationReportingTransferInformation_iE__Extensions_oer_ext_arr_, 0, LocationReportingTransferInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LocationReportingTransferInformation_iE__Extensions_descr_ = { "@RANAP-IEs.LocationReportingTransferInformation.iE-Extensions", &LocationReportingTransferInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_json_, &LocationReportingTransferInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst60_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LocationReportingTransferInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LocationReportingTransferInformation_default_coding(""); const TTCN_Typedescriptor_t& L3__Information_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING L3__Information_default_coding(""); // No XER for Management__Based__MDT__Allowed const TTCN_JSONdescriptor_t Management__Based__MDT__Allowed_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Management__Based__MDT__Allowed_oer_ext_arr_[0] = {}; const int Management__Based__MDT__Allowed_oer_p_[0] = {}; const TTCN_OERdescriptor_t Management__Based__MDT__Allowed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Management__Based__MDT__Allowed_oer_ext_arr_, 0, Management__Based__MDT__Allowed_oer_p_}; static const Per_Constraint Management__Based__MDT__Allowed_per_cons_; const ASN_PERdescriptor_t Management__Based__MDT__Allowed_per_ = { &Management__Based__MDT__Allowed_per_cons_ }; const TTCN_Typedescriptor_t Management__Based__MDT__Allowed_descr_ = { "@RANAP-IEs.Management-Based-MDT-Allowed", &ENUMERATED_ber_, NULL, NULL, NULL, &Management__Based__MDT__Allowed_json_, &Management__Based__MDT__Allowed_oer_, &Management__Based__MDT__Allowed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Management__Based__MDT__Allowed_default_coding(""); // No XER for MBMS__PTP__RAB__ID const int MBMS__PTP__RAB__ID_oer_ext_arr_[0] = {}; const int MBMS__PTP__RAB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMS__PTP__RAB__ID_oer_ = { -1, TRUE, 8, FALSE, 0, 0, MBMS__PTP__RAB__ID_oer_ext_arr_, 0, MBMS__PTP__RAB__ID_oer_p_}; static Per_Integer_Constraint MBMS__PTP__RAB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); static Per_BitString_Constraint MBMS__PTP__RAB__ID_per_cons_(FALSE, &MBMS__PTP__RAB__ID_size_per_cons_); const ASN_PERdescriptor_t MBMS__PTP__RAB__ID_per_ = { &MBMS__PTP__RAB__ID_per_cons_ }; const TTCN_Typedescriptor_t MBMS__PTP__RAB__ID_descr_ = { "@RANAP-IEs.MBMS-PTP-RAB-ID", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &MBMS__PTP__RAB__ID_oer_, &MBMS__PTP__RAB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMS__PTP__RAB__ID_default_coding(""); // No XER for MBMSBearerServiceType const TTCN_JSONdescriptor_t MBMSBearerServiceType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSBearerServiceType_oer_ext_arr_[0] = {}; const int MBMSBearerServiceType_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSBearerServiceType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSBearerServiceType_oer_ext_arr_, 0, MBMSBearerServiceType_oer_p_}; static const Per_Constraint MBMSBearerServiceType_per_cons_; const ASN_PERdescriptor_t MBMSBearerServiceType_per_ = { &MBMSBearerServiceType_per_cons_ }; const TTCN_Typedescriptor_t MBMSBearerServiceType_descr_ = { "@RANAP-IEs.MBMSBearerServiceType", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSBearerServiceType_json_, &MBMSBearerServiceType_oer_, &MBMSBearerServiceType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSBearerServiceType_default_coding(""); // No XER for MBMSCNDe__Registration const TTCN_JSONdescriptor_t MBMSCNDe__Registration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSCNDe__Registration_oer_ext_arr_[0] = {}; const int MBMSCNDe__Registration_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSCNDe__Registration_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSCNDe__Registration_oer_ext_arr_, 0, MBMSCNDe__Registration_oer_p_}; static const Per_Constraint MBMSCNDe__Registration_per_cons_; const ASN_PERdescriptor_t MBMSCNDe__Registration_per_ = { &MBMSCNDe__Registration_per_cons_ }; const TTCN_Typedescriptor_t MBMSCNDe__Registration_descr_ = { "@RANAP-IEs.MBMSCNDe-Registration", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSCNDe__Registration_json_, &MBMSCNDe__Registration_oer_, &MBMSCNDe__Registration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSCNDe__Registration_default_coding(""); // No XER for MBMSCountingInformation const TTCN_JSONdescriptor_t MBMSCountingInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSCountingInformation_oer_ext_arr_[0] = {}; const int MBMSCountingInformation_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSCountingInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSCountingInformation_oer_ext_arr_, 0, MBMSCountingInformation_oer_p_}; static const Per_Constraint MBMSCountingInformation_per_cons_; const ASN_PERdescriptor_t MBMSCountingInformation_per_ = { &MBMSCountingInformation_per_cons_ }; const TTCN_Typedescriptor_t MBMSCountingInformation_descr_ = { "@RANAP-IEs.MBMSCountingInformation", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSCountingInformation_json_, &MBMSCountingInformation_oer_, &MBMSCountingInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSCountingInformation_default_coding(""); // No XER for MBMSHCIndicator const TTCN_JSONdescriptor_t MBMSHCIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSHCIndicator_oer_ext_arr_[0] = {}; const int MBMSHCIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSHCIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSHCIndicator_oer_ext_arr_, 0, MBMSHCIndicator_oer_p_}; static const Per_Constraint MBMSHCIndicator_per_cons_; const ASN_PERdescriptor_t MBMSHCIndicator_per_ = { &MBMSHCIndicator_per_cons_ }; const TTCN_Typedescriptor_t MBMSHCIndicator_descr_ = { "@RANAP-IEs.MBMSHCIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSHCIndicator_json_, &MBMSHCIndicator_oer_, &MBMSHCIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSHCIndicator_default_coding(""); // No XER for MBMSLinkingInformation const TTCN_JSONdescriptor_t MBMSLinkingInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSLinkingInformation_oer_ext_arr_[0] = {}; const int MBMSLinkingInformation_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSLinkingInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSLinkingInformation_oer_ext_arr_, 0, MBMSLinkingInformation_oer_p_}; static const Per_Constraint MBMSLinkingInformation_per_cons_; const ASN_PERdescriptor_t MBMSLinkingInformation_per_ = { &MBMSLinkingInformation_per_cons_ }; const TTCN_Typedescriptor_t MBMSLinkingInformation_descr_ = { "@RANAP-IEs.MBMSLinkingInformation", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSLinkingInformation_json_, &MBMSLinkingInformation_oer_, &MBMSLinkingInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSLinkingInformation_default_coding(""); // No XER for MBMSRegistrationRequestType const TTCN_JSONdescriptor_t MBMSRegistrationRequestType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MBMSRegistrationRequestType_oer_ext_arr_[0] = {}; const int MBMSRegistrationRequestType_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSRegistrationRequestType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MBMSRegistrationRequestType_oer_ext_arr_, 0, MBMSRegistrationRequestType_oer_p_}; static const Per_Constraint MBMSRegistrationRequestType_per_cons_; const ASN_PERdescriptor_t MBMSRegistrationRequestType_per_ = { &MBMSRegistrationRequestType_per_cons_ }; const TTCN_Typedescriptor_t MBMSRegistrationRequestType_descr_ = { "@RANAP-IEs.MBMSRegistrationRequestType", &ENUMERATED_ber_, NULL, NULL, NULL, &MBMSRegistrationRequestType_json_, &MBMSRegistrationRequestType_oer_, &MBMSRegistrationRequestType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSRegistrationRequestType_default_coding(""); const TTCN_Typedescriptor_t& MBMSServiceArea_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING MBMSServiceArea_default_coding(""); // No XER for MBMSSessionDuration const int MBMSSessionDuration_oer_ext_arr_[0] = {}; const int MBMSSessionDuration_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSSessionDuration_oer_ = { -1, TRUE, 3, FALSE, 0, 0, MBMSSessionDuration_oer_ext_arr_, 0, MBMSSessionDuration_oer_p_}; static Per_Integer_Constraint MBMSSessionDuration_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(3), FALSE); const ASN_PERdescriptor_t MBMSSessionDuration_per_ = { &MBMSSessionDuration_per_cons_ }; const TTCN_Typedescriptor_t MBMSSessionDuration_descr_ = { "@RANAP-IEs.MBMSSessionDuration", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MBMSSessionDuration_oer_, &MBMSSessionDuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionDuration_default_coding(""); // No XER for MBMSSessionIdentity const int MBMSSessionIdentity_oer_ext_arr_[0] = {}; const int MBMSSessionIdentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSSessionIdentity_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMSSessionIdentity_oer_ext_arr_, 0, MBMSSessionIdentity_oer_p_}; static Per_Integer_Constraint MBMSSessionIdentity_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t MBMSSessionIdentity_per_ = { &MBMSSessionIdentity_per_cons_ }; const TTCN_Typedescriptor_t MBMSSessionIdentity_descr_ = { "@RANAP-IEs.MBMSSessionIdentity", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MBMSSessionIdentity_oer_, &MBMSSessionIdentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionIdentity_default_coding(""); // No XER for MBMSSessionRepetitionNumber const int MBMSSessionRepetitionNumber_oer_ext_arr_[0] = {}; const int MBMSSessionRepetitionNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t MBMSSessionRepetitionNumber_oer_ = { -1, TRUE, 1, FALSE, 0, 0, MBMSSessionRepetitionNumber_oer_ext_arr_, 0, MBMSSessionRepetitionNumber_oer_p_}; static Per_Integer_Constraint MBMSSessionRepetitionNumber_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t MBMSSessionRepetitionNumber_per_ = { &MBMSSessionRepetitionNumber_per_cons_ }; const TTCN_Typedescriptor_t MBMSSessionRepetitionNumber_descr_ = { "@RANAP-IEs.MBMSSessionRepetitionNumber", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MBMSSessionRepetitionNumber_oer_, &MBMSSessionRepetitionNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MBMSSessionRepetitionNumber_default_coding(""); // No XER for MDT__Activation const TTCN_JSONdescriptor_t MDT__Activation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDT__Activation_oer_ext_arr_[0] = {}; const int MDT__Activation_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Activation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__Activation_oer_ext_arr_, 0, MDT__Activation_oer_p_}; static const Per_Constraint MDT__Activation_per_cons_; const ASN_PERdescriptor_t MDT__Activation_per_ = { &MDT__Activation_per_cons_ }; const TTCN_Typedescriptor_t MDT__Activation_descr_ = { "@RANAP-IEs.MDT-Activation", &ENUMERATED_ber_, NULL, NULL, NULL, &MDT__Activation_json_, &MDT__Activation_oer_, &MDT__Activation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Activation_default_coding(""); // No XER for MDTAreaScope const TTCN_JSONdescriptor_t MDTAreaScope_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDTAreaScope_oer_ext_arr_[0] = {}; const int MDTAreaScope_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDTAreaScope_oer_ = { -1, TRUE, -1, TRUE, 4, 0, MDTAreaScope_oer_ext_arr_, 0, MDTAreaScope_oer_p_}; static const Per_Constraint MDTAreaScope_per_cons_; const ASN_PERdescriptor_t MDTAreaScope_per_ = { &MDTAreaScope_per_cons_ }; const TTCN_Typedescriptor_t MDTAreaScope_descr_ = { "@RANAP-IEs.MDTAreaScope", &CHOICE_ber_, NULL, NULL, NULL, &MDTAreaScope_json_, &MDTAreaScope_oer_, &MDTAreaScope_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t MDTAreaScope_cellbased_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MDTAreaScope_cellbased_ber_ = { 1u, MDTAreaScope_cellbased_tag_ }; // No XER for MDTAreaScope_cellbased const int MDTAreaScope_cellbased_oer_ext_arr_[0] = {}; const int MDTAreaScope_cellbased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t MDTAreaScope_cellbased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDTAreaScope_cellbased_oer_ext_arr_, 2, MDTAreaScope_cellbased_oer_p_}; const TTCN_Typedescriptor_t MDTAreaScope_cellbased_descr_ = { "@RANAP-IEs.MDTAreaScope.cellbased", &MDTAreaScope_cellbased_ber_, NULL, NULL, NULL, &CellBased_json_, &MDTAreaScope_cellbased_oer_, &CellBased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTAreaScope_cellbased_default_coding(""); const ASN_Tag_t MDTAreaScope_labased_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MDTAreaScope_labased_ber_ = { 1u, MDTAreaScope_labased_tag_ }; // No XER for MDTAreaScope_labased const int MDTAreaScope_labased_oer_ext_arr_[0] = {}; const int MDTAreaScope_labased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t MDTAreaScope_labased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDTAreaScope_labased_oer_ext_arr_, 2, MDTAreaScope_labased_oer_p_}; const TTCN_Typedescriptor_t MDTAreaScope_labased_descr_ = { "@RANAP-IEs.MDTAreaScope.labased", &MDTAreaScope_labased_ber_, NULL, NULL, NULL, &LABased_json_, &MDTAreaScope_labased_oer_, &LABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTAreaScope_labased_default_coding(""); const ASN_Tag_t MDTAreaScope_rabased_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t MDTAreaScope_rabased_ber_ = { 1u, MDTAreaScope_rabased_tag_ }; // No XER for MDTAreaScope_rabased const int MDTAreaScope_rabased_oer_ext_arr_[0] = {}; const int MDTAreaScope_rabased_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t MDTAreaScope_rabased_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDTAreaScope_rabased_oer_ext_arr_, 2, MDTAreaScope_rabased_oer_p_}; const TTCN_Typedescriptor_t MDTAreaScope_rabased_descr_ = { "@RANAP-IEs.MDTAreaScope.rabased", &MDTAreaScope_rabased_ber_, NULL, NULL, NULL, &RABased_json_, &MDTAreaScope_rabased_oer_, &RABased_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTAreaScope_rabased_default_coding(""); const ASN_Tag_t MDTAreaScope_plmn__area__based_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t MDTAreaScope_plmn__area__based_ber_ = { 1u, MDTAreaScope_plmn__area__based_tag_ }; // No XER for MDTAreaScope_plmn__area__based const int MDTAreaScope_plmn__area__based_oer_ext_arr_[0] = {}; const int MDTAreaScope_plmn__area__based_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDTAreaScope_plmn__area__based_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDTAreaScope_plmn__area__based_oer_ext_arr_, 0, MDTAreaScope_plmn__area__based_oer_p_}; const TTCN_Typedescriptor_t MDTAreaScope_plmn__area__based_descr_ = { "@RANAP-IEs.MDTAreaScope.plmn-area-based", &MDTAreaScope_plmn__area__based_ber_, NULL, NULL, NULL, &ASN_NULL_json_, &MDTAreaScope_plmn__area__based_oer_, &ASN_NULL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTAreaScope_plmn__area__based_default_coding(""); UNIVERSAL_CHARSTRING MDTAreaScope_default_coding(""); const ASN_Tag_t MDT__Configuration_mdtActivation_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MDT__Configuration_mdtActivation_ber_ = { 1u, MDT__Configuration_mdtActivation_tag_ }; // No XER for MDT__Configuration_mdtActivation const int MDT__Configuration_mdtActivation_oer_ext_arr_[0] = {}; const int MDT__Configuration_mdtActivation_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Configuration_mdtActivation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__Configuration_mdtActivation_oer_ext_arr_, 0, MDT__Configuration_mdtActivation_oer_p_}; const TTCN_Typedescriptor_t MDT__Configuration_mdtActivation_descr_ = { "@RANAP-IEs.MDT-Configuration.mdtActivation", &MDT__Configuration_mdtActivation_ber_, NULL, NULL, NULL, &MDT__Activation_json_, &MDT__Configuration_mdtActivation_oer_, &MDT__Activation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Configuration_mdtActivation_default_coding(""); const ASN_Tag_t MDT__Configuration_mdtAreaScope_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MDT__Configuration_mdtAreaScope_ber_ = { 1u, MDT__Configuration_mdtAreaScope_tag_ }; // No XER for MDT__Configuration_mdtAreaScope const int MDT__Configuration_mdtAreaScope_oer_ext_arr_[0] = {}; const int MDT__Configuration_mdtAreaScope_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Configuration_mdtAreaScope_oer_ = { -1, TRUE, -1, TRUE, 4, 0, MDT__Configuration_mdtAreaScope_oer_ext_arr_, 0, MDT__Configuration_mdtAreaScope_oer_p_}; const TTCN_Typedescriptor_t MDT__Configuration_mdtAreaScope_descr_ = { "@RANAP-IEs.MDT-Configuration.mdtAreaScope", &MDT__Configuration_mdtAreaScope_ber_, NULL, NULL, NULL, &MDTAreaScope_json_, &MDT__Configuration_mdtAreaScope_oer_, &MDTAreaScope_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Configuration_mdtAreaScope_default_coding(""); // No XER for MDTMode const TTCN_JSONdescriptor_t MDTMode_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDTMode_oer_ext_arr_[0] = {}; const int MDTMode_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDTMode_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDTMode_oer_ext_arr_, 0, MDTMode_oer_p_}; static const Per_Constraint MDTMode_per_cons_; const ASN_PERdescriptor_t MDTMode_per_ = { &MDTMode_per_cons_ }; const TTCN_Typedescriptor_t MDTMode_descr_ = { "@RANAP-IEs.MDTMode", &CHOICE_ber_, NULL, NULL, NULL, &MDTMode_json_, &MDTMode_oer_, &MDTMode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t MDTMode_immediateMDT_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t MDTMode_immediateMDT_ber_ = { 1u, MDTMode_immediateMDT_tag_ }; // No XER for MDTMode_immediateMDT const int MDTMode_immediateMDT_oer_ext_arr_[0] = {}; const int MDTMode_immediateMDT_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t MDTMode_immediateMDT_oer_ = { -1, TRUE, -1, TRUE, 3, 0, MDTMode_immediateMDT_oer_ext_arr_, 4, MDTMode_immediateMDT_oer_p_}; const TTCN_Typedescriptor_t MDTMode_immediateMDT_descr_ = { "@RANAP-IEs.MDTMode.immediateMDT", &MDTMode_immediateMDT_ber_, NULL, NULL, NULL, &ImmediateMDT_json_, &MDTMode_immediateMDT_oer_, &ImmediateMDT_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTMode_immediateMDT_default_coding(""); // No XER for LoggingInterval const TTCN_JSONdescriptor_t LoggingInterval_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LoggingInterval_oer_ext_arr_[0] = {}; const int LoggingInterval_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoggingInterval_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoggingInterval_oer_ext_arr_, 0, LoggingInterval_oer_p_}; static const Per_Constraint LoggingInterval_per_cons_; const ASN_PERdescriptor_t LoggingInterval_per_ = { &LoggingInterval_per_cons_ }; const TTCN_Typedescriptor_t LoggingInterval_descr_ = { "@RANAP-IEs.LoggingInterval", &ENUMERATED_ber_, NULL, NULL, NULL, &LoggingInterval_json_, &LoggingInterval_oer_, &LoggingInterval_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoggingInterval_default_coding(""); const ASN_Tag_t LoggedMDT_loggingInterval_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t LoggedMDT_loggingInterval_ber_ = { 1u, LoggedMDT_loggingInterval_tag_ }; // No XER for LoggedMDT_loggingInterval const int LoggedMDT_loggingInterval_oer_ext_arr_[0] = {}; const int LoggedMDT_loggingInterval_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoggedMDT_loggingInterval_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoggedMDT_loggingInterval_oer_ext_arr_, 0, LoggedMDT_loggingInterval_oer_p_}; const TTCN_Typedescriptor_t LoggedMDT_loggingInterval_descr_ = { "@RANAP-IEs.LoggedMDT.loggingInterval", &LoggedMDT_loggingInterval_ber_, NULL, NULL, NULL, &LoggingInterval_json_, &LoggedMDT_loggingInterval_oer_, &LoggingInterval_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoggedMDT_loggingInterval_default_coding(""); // No XER for LoggingDuration const TTCN_JSONdescriptor_t LoggingDuration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LoggingDuration_oer_ext_arr_[0] = {}; const int LoggingDuration_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoggingDuration_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoggingDuration_oer_ext_arr_, 0, LoggingDuration_oer_p_}; static const Per_Constraint LoggingDuration_per_cons_; const ASN_PERdescriptor_t LoggingDuration_per_ = { &LoggingDuration_per_cons_ }; const TTCN_Typedescriptor_t LoggingDuration_descr_ = { "@RANAP-IEs.LoggingDuration", &ENUMERATED_ber_, NULL, NULL, NULL, &LoggingDuration_json_, &LoggingDuration_oer_, &LoggingDuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoggingDuration_default_coding(""); const ASN_Tag_t LoggedMDT_loggingDuration_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t LoggedMDT_loggingDuration_ber_ = { 1u, LoggedMDT_loggingDuration_tag_ }; // No XER for LoggedMDT_loggingDuration const int LoggedMDT_loggingDuration_oer_ext_arr_[0] = {}; const int LoggedMDT_loggingDuration_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoggedMDT_loggingDuration_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoggedMDT_loggingDuration_oer_ext_arr_, 0, LoggedMDT_loggingDuration_oer_p_}; const TTCN_Typedescriptor_t LoggedMDT_loggingDuration_descr_ = { "@RANAP-IEs.LoggedMDT.loggingDuration", &LoggedMDT_loggingDuration_ber_, NULL, NULL, NULL, &LoggingDuration_json_, &LoggedMDT_loggingDuration_oer_, &LoggingDuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoggedMDT_loggingDuration_default_coding(""); // No XER for LoggedMDT const TTCN_JSONdescriptor_t LoggedMDT_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int LoggedMDT_oer_ext_arr_[0] = {}; const int LoggedMDT_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t LoggedMDT_oer_ = { -1, TRUE, -1, TRUE, 3, 0, LoggedMDT_oer_ext_arr_, 3, LoggedMDT_oer_p_}; static const Per_Constraint LoggedMDT_per_cons_; const ASN_PERdescriptor_t LoggedMDT_per_ = { &LoggedMDT_per_cons_ }; const TTCN_Typedescriptor_t LoggedMDT_descr_ = { "@RANAP-IEs.LoggedMDT", &SEQUENCE_ber_, NULL, NULL, NULL, &LoggedMDT_json_, &LoggedMDT_oer_, &LoggedMDT_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst61", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst61.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst61.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst61.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst61.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst61", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst61.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst61_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_default_coding(""); const ASN_Tag_t LoggedMDT_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t LoggedMDT_iE__Extensions_ber_ = { 1u, LoggedMDT_iE__Extensions_tag_ }; // No XER for LoggedMDT_iE__Extensions const int LoggedMDT_iE__Extensions_oer_ext_arr_[0] = {}; const int LoggedMDT_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t LoggedMDT_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoggedMDT_iE__Extensions_oer_ext_arr_, 0, LoggedMDT_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t LoggedMDT_iE__Extensions_descr_ = { "@RANAP-IEs.LoggedMDT.iE-Extensions", &LoggedMDT_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_json_, &LoggedMDT_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst61_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING LoggedMDT_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING LoggedMDT_default_coding(""); const ASN_Tag_t MDTMode_loggedMDT_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t MDTMode_loggedMDT_ber_ = { 1u, MDTMode_loggedMDT_tag_ }; // No XER for MDTMode_loggedMDT const int MDTMode_loggedMDT_oer_ext_arr_[0] = {}; const int MDTMode_loggedMDT_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t MDTMode_loggedMDT_oer_ = { -1, TRUE, -1, TRUE, 3, 0, MDTMode_loggedMDT_oer_ext_arr_, 3, MDTMode_loggedMDT_oer_p_}; const TTCN_Typedescriptor_t MDTMode_loggedMDT_descr_ = { "@RANAP-IEs.MDTMode.loggedMDT", &MDTMode_loggedMDT_ber_, NULL, NULL, NULL, &LoggedMDT_json_, &MDTMode_loggedMDT_oer_, &LoggedMDT_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDTMode_loggedMDT_default_coding(""); UNIVERSAL_CHARSTRING MDTMode_default_coding(""); const ASN_Tag_t MDT__Configuration_mdtMode_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t MDT__Configuration_mdtMode_ber_ = { 1u, MDT__Configuration_mdtMode_tag_ }; // No XER for MDT__Configuration_mdtMode const int MDT__Configuration_mdtMode_oer_ext_arr_[0] = {}; const int MDT__Configuration_mdtMode_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Configuration_mdtMode_oer_ = { -1, TRUE, -1, TRUE, 2, 0, MDT__Configuration_mdtMode_oer_ext_arr_, 0, MDT__Configuration_mdtMode_oer_p_}; const TTCN_Typedescriptor_t MDT__Configuration_mdtMode_descr_ = { "@RANAP-IEs.MDT-Configuration.mdtMode", &MDT__Configuration_mdtMode_ber_, NULL, NULL, NULL, &MDTMode_json_, &MDT__Configuration_mdtMode_oer_, &MDTMode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Configuration_mdtMode_default_coding(""); // No XER for MDT__Configuration const TTCN_JSONdescriptor_t MDT__Configuration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDT__Configuration_oer_ext_arr_[0] = {}; const int MDT__Configuration_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t MDT__Configuration_oer_ = { -1, TRUE, -1, TRUE, 4, 0, MDT__Configuration_oer_ext_arr_, 4, MDT__Configuration_oer_p_}; static const Per_Constraint MDT__Configuration_per_cons_; const ASN_PERdescriptor_t MDT__Configuration_per_ = { &MDT__Configuration_per_cons_ }; const TTCN_Typedescriptor_t MDT__Configuration_descr_ = { "@RANAP-IEs.MDT-Configuration", &SEQUENCE_ber_, NULL, NULL, NULL, &MDT__Configuration_json_, &MDT__Configuration_oer_, &MDT__Configuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst62", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst62.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst62.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst62.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MDT__PLMN__List const TTCN_JSONdescriptor_t MDT__PLMN__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MDT__PLMN__List_oer_ext_arr_[0] = {}; const int MDT__PLMN__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__PLMN__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__PLMN__List_oer_ext_arr_, 0, MDT__PLMN__List_oer_p_}; static Per_Integer_Constraint MDT__PLMN__List_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t MDT__PLMN__List_per_ = { &MDT__PLMN__List_per_cons_ }; const TTCN_Typedescriptor_t MDT__PLMN__List_descr_ = { "@RANAP-IEs.MDT-PLMN-List", &SEQUENCE_ber_, NULL, NULL, NULL, &MDT__PLMN__List_json_, &MDT__PLMN__List_oer_, &MDT__PLMN__List_per_, &MDT__PLMN__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MDT__PLMN__List_0 const int MDT__PLMN__List_0_oer_ext_arr_[0] = {}; const int MDT__PLMN__List_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__PLMN__List_0_oer_ = { -1, TRUE, 3, FALSE, 0, 0, MDT__PLMN__List_0_oer_ext_arr_, 0, MDT__PLMN__List_0_oer_p_}; const TTCN_Typedescriptor_t MDT__PLMN__List_0_descr_ = { "@RANAP-IEs.MDT-PLMN-List.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MDT__PLMN__List_0_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__PLMN__List_0_default_coding(""); UNIVERSAL_CHARSTRING MDT__PLMN__List_default_coding(""); RANAP__CommonDataTypes::Criticality const_MDT__Configuration__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& MDT__Configuration__ExtIEs_1_criticality = const_MDT__Configuration__ExtIEs_1_criticality; INTEGER const_MDT__Configuration__ExtIEs_1_id; const INTEGER& MDT__Configuration__ExtIEs_1_id = const_MDT__Configuration__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_MDT__Configuration__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& MDT__Configuration__ExtIEs_1_presence = const_MDT__Configuration__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst62.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst62", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst62.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst62_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_default_coding(""); const ASN_Tag_t MDT__Configuration_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t MDT__Configuration_iE__Extensions_ber_ = { 1u, MDT__Configuration_iE__Extensions_tag_ }; // No XER for MDT__Configuration_iE__Extensions const int MDT__Configuration_iE__Extensions_oer_ext_arr_[0] = {}; const int MDT__Configuration_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t MDT__Configuration_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MDT__Configuration_iE__Extensions_oer_ext_arr_, 0, MDT__Configuration_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t MDT__Configuration_iE__Extensions_descr_ = { "@RANAP-IEs.MDT-Configuration.iE-Extensions", &MDT__Configuration_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_json_, &MDT__Configuration_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst62_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MDT__Configuration_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING MDT__Configuration_default_coding(""); // No XER for MSISDN const int MSISDN_oer_ext_arr_[0] = {}; const int MSISDN_oer_p_[0] = {}; const TTCN_OERdescriptor_t MSISDN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MSISDN_oer_ext_arr_, 0, MSISDN_oer_p_}; static Per_Integer_Constraint MSISDN_per_cons_(new INTEGER(1), new INTEGER(9), FALSE); const ASN_PERdescriptor_t MSISDN_per_ = { &MSISDN_per_cons_ }; const TTCN_Typedescriptor_t MSISDN_descr_ = { "@RANAP-IEs.MSISDN", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &MSISDN_oer_, &MSISDN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MSISDN_default_coding(""); const TTCN_Typedescriptor_t& NAS__PDU_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING NAS__PDU_default_coding(""); // No XER for NAS__SequenceNumber const int NAS__SequenceNumber_oer_ext_arr_[0] = {}; const int NAS__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t NAS__SequenceNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NAS__SequenceNumber_oer_ext_arr_, 0, NAS__SequenceNumber_oer_p_}; static Per_Integer_Constraint NAS__SequenceNumber_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); static Per_BitString_Constraint NAS__SequenceNumber_per_cons_(FALSE, &NAS__SequenceNumber_size_per_cons_); const ASN_PERdescriptor_t NAS__SequenceNumber_per_ = { &NAS__SequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t NAS__SequenceNumber_descr_ = { "@RANAP-IEs.NAS-SequenceNumber", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &NAS__SequenceNumber_oer_, &NAS__SequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NAS__SequenceNumber_default_coding(""); // No XER for NAS__SynchronisationIndicator const int NAS__SynchronisationIndicator_oer_ext_arr_[0] = {}; const int NAS__SynchronisationIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t NAS__SynchronisationIndicator_oer_ = { -1, TRUE, 4, FALSE, 0, 0, NAS__SynchronisationIndicator_oer_ext_arr_, 0, NAS__SynchronisationIndicator_oer_p_}; static Per_Integer_Constraint NAS__SynchronisationIndicator_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); static Per_BitString_Constraint NAS__SynchronisationIndicator_per_cons_(FALSE, &NAS__SynchronisationIndicator_size_per_cons_); const ASN_PERdescriptor_t NAS__SynchronisationIndicator_per_ = { &NAS__SynchronisationIndicator_per_cons_ }; const TTCN_Typedescriptor_t NAS__SynchronisationIndicator_descr_ = { "@RANAP-IEs.NAS-SynchronisationIndicator", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &NAS__SynchronisationIndicator_oer_, &NAS__SynchronisationIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NAS__SynchronisationIndicator_default_coding(""); const TTCN_Typedescriptor_t& NewBSS__To__OldBSS__Information_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING NewBSS__To__OldBSS__Information_default_coding(""); // No XER for NonSearchingIndication const TTCN_JSONdescriptor_t NonSearchingIndication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int NonSearchingIndication_oer_ext_arr_[0] = {}; const int NonSearchingIndication_oer_p_[0] = {}; const TTCN_OERdescriptor_t NonSearchingIndication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NonSearchingIndication_oer_ext_arr_, 0, NonSearchingIndication_oer_p_}; static const Per_Constraint NonSearchingIndication_per_cons_; const ASN_PERdescriptor_t NonSearchingIndication_per_ = { &NonSearchingIndication_per_cons_ }; const TTCN_Typedescriptor_t NonSearchingIndication_descr_ = { "@RANAP-IEs.NonSearchingIndication", &ENUMERATED_ber_, NULL, NULL, NULL, &NonSearchingIndication_json_, &NonSearchingIndication_oer_, &NonSearchingIndication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NonSearchingIndication_default_coding(""); // No XER for Null__NRI const int Null__NRI_oer_ext_arr_[0] = {}; const int Null__NRI_oer_p_[0] = {}; const TTCN_OERdescriptor_t Null__NRI_oer_ = { -1, TRUE, 10, FALSE, 0, 0, Null__NRI_oer_ext_arr_, 0, Null__NRI_oer_p_}; static Per_Integer_Constraint Null__NRI_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(10), FALSE); static Per_BitString_Constraint Null__NRI_per_cons_(FALSE, &Null__NRI_size_per_cons_); const ASN_PERdescriptor_t Null__NRI_per_ = { &Null__NRI_per_cons_ }; const TTCN_Typedescriptor_t Null__NRI_descr_ = { "@RANAP-IEs.Null-NRI", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &Null__NRI_oer_, &Null__NRI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Null__NRI_default_coding(""); // No XER for NumberOfIuInstances const int NumberOfIuInstances_oer_ext_arr_[0] = {}; const int NumberOfIuInstances_oer_p_[0] = {}; const TTCN_OERdescriptor_t NumberOfIuInstances_oer_ = { 1, FALSE, -1, FALSE, 0, 0, NumberOfIuInstances_oer_ext_arr_, 0, NumberOfIuInstances_oer_p_}; static Per_Integer_Constraint NumberOfIuInstances_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t NumberOfIuInstances_per_ = { &NumberOfIuInstances_per_cons_ }; const TTCN_Typedescriptor_t NumberOfIuInstances_descr_ = { "@RANAP-IEs.NumberOfIuInstances", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &NumberOfIuInstances_oer_, &NumberOfIuInstances_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NumberOfIuInstances_default_coding(""); // No XER for NumberOfSteps const int NumberOfSteps_oer_ext_arr_[0] = {}; const int NumberOfSteps_oer_p_[0] = {}; const TTCN_OERdescriptor_t NumberOfSteps_oer_ = { 1, FALSE, -1, FALSE, 0, 0, NumberOfSteps_oer_ext_arr_, 0, NumberOfSteps_oer_p_}; static Per_Integer_Constraint NumberOfSteps_per_cons_(new INTEGER(1), new INTEGER(16), FALSE); const ASN_PERdescriptor_t NumberOfSteps_per_ = { &NumberOfSteps_per_cons_ }; const TTCN_Typedescriptor_t NumberOfSteps_descr_ = { "@RANAP-IEs.NumberOfSteps", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &NumberOfSteps_oer_, &NumberOfSteps_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NumberOfSteps_default_coding(""); // No XER for Offload__RAB__Parameters__APN const int Offload__RAB__Parameters__APN_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters__APN_oer_p_[0] = {}; const TTCN_OERdescriptor_t Offload__RAB__Parameters__APN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Offload__RAB__Parameters__APN_oer_ext_arr_, 0, Offload__RAB__Parameters__APN_oer_p_}; static Per_Integer_Constraint Offload__RAB__Parameters__APN_per_cons_(new INTEGER(1), new INTEGER(255), FALSE); const ASN_PERdescriptor_t Offload__RAB__Parameters__APN_per_ = { &Offload__RAB__Parameters__APN_per_cons_ }; const TTCN_Typedescriptor_t Offload__RAB__Parameters__APN_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters-APN", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Offload__RAB__Parameters__APN_oer_, &Offload__RAB__Parameters__APN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Offload__RAB__Parameters__APN_default_coding(""); const ASN_Tag_t Offload__RAB__Parameters_accessPointName_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Offload__RAB__Parameters_accessPointName_ber_ = { 1u, Offload__RAB__Parameters_accessPointName_tag_ }; // No XER for Offload__RAB__Parameters_accessPointName const int Offload__RAB__Parameters_accessPointName_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters_accessPointName_oer_p_[0] = {}; const TTCN_OERdescriptor_t Offload__RAB__Parameters_accessPointName_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Offload__RAB__Parameters_accessPointName_oer_ext_arr_, 0, Offload__RAB__Parameters_accessPointName_oer_p_}; const TTCN_Typedescriptor_t Offload__RAB__Parameters_accessPointName_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters.accessPointName", &Offload__RAB__Parameters_accessPointName_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Offload__RAB__Parameters_accessPointName_oer_, &Offload__RAB__Parameters__APN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Offload__RAB__Parameters_accessPointName_default_coding(""); // No XER for Offload__RAB__Parameters__ChargingCharacteristics const int Offload__RAB__Parameters__ChargingCharacteristics_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters__ChargingCharacteristics_oer_p_[0] = {}; const TTCN_OERdescriptor_t Offload__RAB__Parameters__ChargingCharacteristics_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Offload__RAB__Parameters__ChargingCharacteristics_oer_ext_arr_, 0, Offload__RAB__Parameters__ChargingCharacteristics_oer_p_}; static Per_Integer_Constraint Offload__RAB__Parameters__ChargingCharacteristics_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t Offload__RAB__Parameters__ChargingCharacteristics_per_ = { &Offload__RAB__Parameters__ChargingCharacteristics_per_cons_ }; const TTCN_Typedescriptor_t Offload__RAB__Parameters__ChargingCharacteristics_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters-ChargingCharacteristics", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Offload__RAB__Parameters__ChargingCharacteristics_oer_, &Offload__RAB__Parameters__ChargingCharacteristics_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Offload__RAB__Parameters__ChargingCharacteristics_default_coding(""); const ASN_Tag_t Offload__RAB__Parameters_chargingCharacteristics_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Offload__RAB__Parameters_chargingCharacteristics_ber_ = { 1u, Offload__RAB__Parameters_chargingCharacteristics_tag_ }; // No XER for Offload__RAB__Parameters_chargingCharacteristics const int Offload__RAB__Parameters_chargingCharacteristics_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters_chargingCharacteristics_oer_p_[0] = {}; const TTCN_OERdescriptor_t Offload__RAB__Parameters_chargingCharacteristics_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Offload__RAB__Parameters_chargingCharacteristics_oer_ext_arr_, 0, Offload__RAB__Parameters_chargingCharacteristics_oer_p_}; const TTCN_Typedescriptor_t Offload__RAB__Parameters_chargingCharacteristics_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters.chargingCharacteristics", &Offload__RAB__Parameters_chargingCharacteristics_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Offload__RAB__Parameters_chargingCharacteristics_oer_, &Offload__RAB__Parameters__ChargingCharacteristics_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Offload__RAB__Parameters_chargingCharacteristics_default_coding(""); // No XER for Offload__RAB__Parameters const TTCN_JSONdescriptor_t Offload__RAB__Parameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Offload__RAB__Parameters_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Offload__RAB__Parameters_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Offload__RAB__Parameters_oer_ext_arr_, 3, Offload__RAB__Parameters_oer_p_}; static const Per_Constraint Offload__RAB__Parameters_per_cons_; const ASN_PERdescriptor_t Offload__RAB__Parameters_per_ = { &Offload__RAB__Parameters_per_cons_ }; const TTCN_Typedescriptor_t Offload__RAB__Parameters_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters", &SEQUENCE_ber_, NULL, NULL, NULL, &Offload__RAB__Parameters_json_, &Offload__RAB__Parameters_oer_, &Offload__RAB__Parameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst63", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst63.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst63.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst63.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst63.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst63", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst63.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst63_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_default_coding(""); const ASN_Tag_t Offload__RAB__Parameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Offload__RAB__Parameters_iE__Extensions_ber_ = { 1u, Offload__RAB__Parameters_iE__Extensions_tag_ }; // No XER for Offload__RAB__Parameters_iE__Extensions const int Offload__RAB__Parameters_iE__Extensions_oer_ext_arr_[0] = {}; const int Offload__RAB__Parameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Offload__RAB__Parameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Offload__RAB__Parameters_iE__Extensions_oer_ext_arr_, 0, Offload__RAB__Parameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Offload__RAB__Parameters_iE__Extensions_descr_ = { "@RANAP-IEs.Offload-RAB-Parameters.iE-Extensions", &Offload__RAB__Parameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_json_, &Offload__RAB__Parameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst63_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Offload__RAB__Parameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Offload__RAB__Parameters_default_coding(""); const TTCN_Typedescriptor_t& OldBSS__ToNewBSS__Information_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING OldBSS__ToNewBSS__Information_default_coding(""); // No XER for OMC__ID const int OMC__ID_oer_ext_arr_[0] = {}; const int OMC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t OMC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OMC__ID_oer_ext_arr_, 0, OMC__ID_oer_p_}; static Per_Integer_Constraint OMC__ID_per_cons_(new INTEGER(3), new INTEGER(22), FALSE); const ASN_PERdescriptor_t OMC__ID_per_ = { &OMC__ID_per_cons_ }; const TTCN_Typedescriptor_t OMC__ID_descr_ = { "@RANAP-IEs.OMC-ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &OMC__ID_oer_, &OMC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING OMC__ID_default_coding(""); // No XER for Out__Of__UTRAN const TTCN_JSONdescriptor_t Out__Of__UTRAN_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Out__Of__UTRAN_oer_ext_arr_[0] = {}; const int Out__Of__UTRAN_oer_p_[0] = {}; const TTCN_OERdescriptor_t Out__Of__UTRAN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Out__Of__UTRAN_oer_ext_arr_, 0, Out__Of__UTRAN_oer_p_}; static const Per_Constraint Out__Of__UTRAN_per_cons_; const ASN_PERdescriptor_t Out__Of__UTRAN_per_ = { &Out__Of__UTRAN_per_cons_ }; const TTCN_Typedescriptor_t Out__Of__UTRAN_descr_ = { "@RANAP-IEs.Out-Of-UTRAN", &ENUMERATED_ber_, NULL, NULL, NULL, &Out__Of__UTRAN_json_, &Out__Of__UTRAN_oer_, &Out__Of__UTRAN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Out__Of__UTRAN_default_coding(""); // No XER for PagingAreaID const TTCN_JSONdescriptor_t PagingAreaID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PagingAreaID_oer_ext_arr_[0] = {}; const int PagingAreaID_oer_p_[0] = {}; const TTCN_OERdescriptor_t PagingAreaID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, PagingAreaID_oer_ext_arr_, 0, PagingAreaID_oer_p_}; static const Per_Constraint PagingAreaID_per_cons_; const ASN_PERdescriptor_t PagingAreaID_per_ = { &PagingAreaID_per_cons_ }; const TTCN_Typedescriptor_t PagingAreaID_descr_ = { "@RANAP-IEs.PagingAreaID", &CHOICE_ber_, NULL, NULL, NULL, &PagingAreaID_json_, &PagingAreaID_oer_, &PagingAreaID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t PagingAreaID_lAI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PagingAreaID_lAI_ber_ = { 1u, PagingAreaID_lAI_tag_ }; // No XER for PagingAreaID_lAI const int PagingAreaID_lAI_oer_ext_arr_[0] = {}; const int PagingAreaID_lAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t PagingAreaID_lAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PagingAreaID_lAI_oer_ext_arr_, 3, PagingAreaID_lAI_oer_p_}; const TTCN_Typedescriptor_t PagingAreaID_lAI_descr_ = { "@RANAP-IEs.PagingAreaID.lAI", &PagingAreaID_lAI_ber_, NULL, NULL, NULL, &LAI_json_, &PagingAreaID_lAI_oer_, &LAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PagingAreaID_lAI_default_coding(""); const ASN_Tag_t PagingAreaID_rAI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t PagingAreaID_rAI_ber_ = { 1u, PagingAreaID_rAI_tag_ }; // No XER for PagingAreaID_rAI const int PagingAreaID_rAI_oer_ext_arr_[0] = {}; const int PagingAreaID_rAI_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t PagingAreaID_rAI_oer_ = { -1, TRUE, -1, TRUE, 3, 0, PagingAreaID_rAI_oer_ext_arr_, 3, PagingAreaID_rAI_oer_p_}; const TTCN_Typedescriptor_t PagingAreaID_rAI_descr_ = { "@RANAP-IEs.PagingAreaID.rAI", &PagingAreaID_rAI_ber_, NULL, NULL, NULL, &RAI_json_, &PagingAreaID_rAI_oer_, &RAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PagingAreaID_rAI_default_coding(""); UNIVERSAL_CHARSTRING PagingAreaID_default_coding(""); // No XER for PagingCause const TTCN_JSONdescriptor_t PagingCause_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PagingCause_oer_ext_arr_[0] = {}; const int PagingCause_oer_p_[0] = {}; const TTCN_OERdescriptor_t PagingCause_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PagingCause_oer_ext_arr_, 0, PagingCause_oer_p_}; static const Per_Constraint PagingCause_per_cons_; const ASN_PERdescriptor_t PagingCause_per_ = { &PagingCause_per_cons_ }; const TTCN_Typedescriptor_t PagingCause_descr_ = { "@RANAP-IEs.PagingCause", &ENUMERATED_ber_, NULL, NULL, NULL, &PagingCause_json_, &PagingCause_oer_, &PagingCause_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PagingCause_default_coding(""); // No XER for PDP__TypeInformation const TTCN_JSONdescriptor_t PDP__TypeInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PDP__TypeInformation_oer_ext_arr_[0] = {}; const int PDP__TypeInformation_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__TypeInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__TypeInformation_oer_ext_arr_, 0, PDP__TypeInformation_oer_p_}; static Per_Integer_Constraint PDP__TypeInformation_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t PDP__TypeInformation_per_ = { &PDP__TypeInformation_per_cons_ }; const TTCN_Typedescriptor_t PDP__TypeInformation_descr_ = { "@RANAP-IEs.PDP-TypeInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &PDP__TypeInformation_json_, &PDP__TypeInformation_oer_, &PDP__TypeInformation_per_, &PDP__Type_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PDP__Type const TTCN_JSONdescriptor_t PDP__Type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PDP__Type_oer_ext_arr_[0] = {}; const int PDP__Type_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Type_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Type_oer_ext_arr_, 0, PDP__Type_oer_p_}; static const Per_Constraint PDP__Type_per_cons_; const ASN_PERdescriptor_t PDP__Type_per_ = { &PDP__Type_per_cons_ }; const TTCN_Typedescriptor_t PDP__Type_descr_ = { "@RANAP-IEs.PDP-Type", &ENUMERATED_ber_, NULL, NULL, NULL, &PDP__Type_json_, &PDP__Type_oer_, &PDP__Type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Type_default_coding(""); UNIVERSAL_CHARSTRING PDP__TypeInformation_0_default_coding(""); UNIVERSAL_CHARSTRING PDP__TypeInformation_default_coding(""); // No XER for PDP__TypeInformation__extension const TTCN_JSONdescriptor_t PDP__TypeInformation__extension_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PDP__TypeInformation__extension_oer_ext_arr_[0] = {}; const int PDP__TypeInformation__extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__TypeInformation__extension_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__TypeInformation__extension_oer_ext_arr_, 0, PDP__TypeInformation__extension_oer_p_}; static Per_Integer_Constraint PDP__TypeInformation__extension_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t PDP__TypeInformation__extension_per_ = { &PDP__TypeInformation__extension_per_cons_ }; const TTCN_Typedescriptor_t PDP__TypeInformation__extension_descr_ = { "@RANAP-IEs.PDP-TypeInformation-extension", &SEQUENCE_ber_, NULL, NULL, NULL, &PDP__TypeInformation__extension_json_, &PDP__TypeInformation__extension_oer_, &PDP__TypeInformation__extension_per_, &PDP__Type__extension_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PDP__Type__extension const TTCN_JSONdescriptor_t PDP__Type__extension_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PDP__Type__extension_oer_ext_arr_[0] = {}; const int PDP__Type__extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDP__Type__extension_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PDP__Type__extension_oer_ext_arr_, 0, PDP__Type__extension_oer_p_}; static const Per_Constraint PDP__Type__extension_per_cons_; const ASN_PERdescriptor_t PDP__Type__extension_per_ = { &PDP__Type__extension_per_cons_ }; const TTCN_Typedescriptor_t PDP__Type__extension_descr_ = { "@RANAP-IEs.PDP-Type-extension", &ENUMERATED_ber_, NULL, NULL, NULL, &PDP__Type__extension_json_, &PDP__Type__extension_oer_, &PDP__Type__extension_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDP__Type__extension_default_coding(""); UNIVERSAL_CHARSTRING PDP__TypeInformation__extension_0_default_coding(""); UNIVERSAL_CHARSTRING PDP__TypeInformation__extension_default_coding(""); // No XER for PDUType14FrameSequenceNumber const int PDUType14FrameSequenceNumber_oer_ext_arr_[0] = {}; const int PDUType14FrameSequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t PDUType14FrameSequenceNumber_oer_ = { 1, FALSE, -1, FALSE, 0, 0, PDUType14FrameSequenceNumber_oer_ext_arr_, 0, PDUType14FrameSequenceNumber_oer_p_}; static Per_Integer_Constraint PDUType14FrameSequenceNumber_per_cons_(new INTEGER(0), new INTEGER(3), FALSE); const ASN_PERdescriptor_t PDUType14FrameSequenceNumber_per_ = { &PDUType14FrameSequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t PDUType14FrameSequenceNumber_descr_ = { "@RANAP-IEs.PDUType14FrameSequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &PDUType14FrameSequenceNumber_oer_, &PDUType14FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PDUType14FrameSequenceNumber_default_coding(""); // No XER for PLMNs__in__shared__network const TTCN_JSONdescriptor_t PLMNs__in__shared__network_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PLMNs__in__shared__network_oer_ext_arr_[0] = {}; const int PLMNs__in__shared__network_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNs__in__shared__network_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNs__in__shared__network_oer_ext_arr_, 0, PLMNs__in__shared__network_oer_p_}; static Per_Integer_Constraint PLMNs__in__shared__network_per_cons_(new INTEGER(1), new INTEGER(32), FALSE); const ASN_PERdescriptor_t PLMNs__in__shared__network_per_ = { &PLMNs__in__shared__network_per_cons_ }; const TTCN_Typedescriptor_t PLMNs__in__shared__network_descr_ = { "@RANAP-IEs.PLMNs-in-shared-network", &SEQUENCE_ber_, NULL, NULL, NULL, &PLMNs__in__shared__network_json_, &PLMNs__in__shared__network_oer_, &PLMNs__in__shared__network_per_, &PLMNs__in__shared__network_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t PLMNs__in__shared__network_0_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PLMNs__in__shared__network_0_pLMNidentity_ber_ = { 1u, PLMNs__in__shared__network_0_pLMNidentity_tag_ }; // No XER for PLMNs__in__shared__network_0_pLMNidentity const int PLMNs__in__shared__network_0_pLMNidentity_oer_ext_arr_[0] = {}; const int PLMNs__in__shared__network_0_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNs__in__shared__network_0_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, PLMNs__in__shared__network_0_pLMNidentity_oer_ext_arr_, 0, PLMNs__in__shared__network_0_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t PLMNs__in__shared__network_0_pLMNidentity_descr_ = { "@RANAP-IEs.PLMNs-in-shared-network.SEQUENCE.pLMNidentity", &PLMNs__in__shared__network_0_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PLMNs__in__shared__network_0_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNs__in__shared__network_0_pLMNidentity_default_coding(""); const ASN_Tag_t PLMNs__in__shared__network_0_lA__LIST_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t PLMNs__in__shared__network_0_lA__LIST_ber_ = { 1u, PLMNs__in__shared__network_0_lA__LIST_tag_ }; // No XER for PLMNs__in__shared__network_0_lA__LIST const int PLMNs__in__shared__network_0_lA__LIST_oer_ext_arr_[0] = {}; const int PLMNs__in__shared__network_0_lA__LIST_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNs__in__shared__network_0_lA__LIST_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNs__in__shared__network_0_lA__LIST_oer_ext_arr_, 0, PLMNs__in__shared__network_0_lA__LIST_oer_p_}; const TTCN_Typedescriptor_t PLMNs__in__shared__network_0_lA__LIST_descr_ = { "@RANAP-IEs.PLMNs-in-shared-network.SEQUENCE.lA-LIST", &PLMNs__in__shared__network_0_lA__LIST_ber_, NULL, NULL, NULL, &LA__LIST_json_, &PLMNs__in__shared__network_0_lA__LIST_oer_, &LA__LIST_per_, &LA__LIST_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNs__in__shared__network_0_lA__LIST_default_coding(""); // No XER for PLMNs__in__shared__network_0 const TTCN_JSONdescriptor_t PLMNs__in__shared__network_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PLMNs__in__shared__network_0_oer_ext_arr_[0] = {}; const int PLMNs__in__shared__network_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t PLMNs__in__shared__network_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, PLMNs__in__shared__network_0_oer_ext_arr_, 3, PLMNs__in__shared__network_0_oer_p_}; static const Per_Constraint PLMNs__in__shared__network_0_per_cons_; const ASN_PERdescriptor_t PLMNs__in__shared__network_0_per_ = { &PLMNs__in__shared__network_0_per_cons_ }; const TTCN_Typedescriptor_t PLMNs__in__shared__network_0_descr_ = { "@RANAP-IEs.PLMNs-in-shared-network.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &PLMNs__in__shared__network_0_json_, &PLMNs__in__shared__network_0_oer_, &PLMNs__in__shared__network_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst64", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst64.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst64.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst64.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst64.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst64", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst64.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst64_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_default_coding(""); const ASN_Tag_t PLMNs__in__shared__network_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t PLMNs__in__shared__network_0_iE__Extensions_ber_ = { 1u, PLMNs__in__shared__network_0_iE__Extensions_tag_ }; // No XER for PLMNs__in__shared__network_0_iE__Extensions const int PLMNs__in__shared__network_0_iE__Extensions_oer_ext_arr_[0] = {}; const int PLMNs__in__shared__network_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t PLMNs__in__shared__network_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PLMNs__in__shared__network_0_iE__Extensions_oer_ext_arr_, 0, PLMNs__in__shared__network_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t PLMNs__in__shared__network_0_iE__Extensions_descr_ = { "@RANAP-IEs.PLMNs-in-shared-network.SEQUENCE.iE-Extensions", &PLMNs__in__shared__network_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_json_, &PLMNs__in__shared__network_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst64_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PLMNs__in__shared__network_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING PLMNs__in__shared__network_0_default_coding(""); UNIVERSAL_CHARSTRING PLMNs__in__shared__network_default_coding(""); // No XER for Port__Number const int Port__Number_oer_ext_arr_[0] = {}; const int Port__Number_oer_p_[0] = {}; const TTCN_OERdescriptor_t Port__Number_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Port__Number_oer_ext_arr_, 0, Port__Number_oer_p_}; static Per_Integer_Constraint Port__Number_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t Port__Number_per_ = { &Port__Number_per_cons_ }; const TTCN_Typedescriptor_t Port__Number_descr_ = { "@RANAP-IEs.Port-Number", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &Port__Number_oer_, &Port__Number_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Port__Number_default_coding(""); // No XER for PositioningDataDiscriminator const int PositioningDataDiscriminator_oer_ext_arr_[0] = {}; const int PositioningDataDiscriminator_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositioningDataDiscriminator_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PositioningDataDiscriminator_oer_ext_arr_, 0, PositioningDataDiscriminator_oer_p_}; static Per_Integer_Constraint PositioningDataDiscriminator_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); static Per_BitString_Constraint PositioningDataDiscriminator_per_cons_(FALSE, &PositioningDataDiscriminator_size_per_cons_); const ASN_PERdescriptor_t PositioningDataDiscriminator_per_ = { &PositioningDataDiscriminator_per_cons_ }; const TTCN_Typedescriptor_t PositioningDataDiscriminator_descr_ = { "@RANAP-IEs.PositioningDataDiscriminator", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &PositioningDataDiscriminator_oer_, &PositioningDataDiscriminator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositioningDataDiscriminator_default_coding(""); // No XER for PositioningDataSet const TTCN_JSONdescriptor_t PositioningDataSet_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PositioningDataSet_oer_ext_arr_[0] = {}; const int PositioningDataSet_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositioningDataSet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PositioningDataSet_oer_ext_arr_, 0, PositioningDataSet_oer_p_}; static Per_Integer_Constraint PositioningDataSet_per_cons_(new INTEGER(1), new INTEGER(9), FALSE); const ASN_PERdescriptor_t PositioningDataSet_per_ = { &PositioningDataSet_per_cons_ }; const TTCN_Typedescriptor_t PositioningDataSet_descr_ = { "@RANAP-IEs.PositioningDataSet", &SEQUENCE_ber_, NULL, NULL, NULL, &PositioningDataSet_json_, &PositioningDataSet_oer_, &PositioningDataSet_per_, &PositioningDataSet_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for PositioningMethodAndUsage const int PositioningMethodAndUsage_oer_ext_arr_[0] = {}; const int PositioningMethodAndUsage_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositioningMethodAndUsage_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PositioningMethodAndUsage_oer_ext_arr_, 0, PositioningMethodAndUsage_oer_p_}; static Per_Integer_Constraint PositioningMethodAndUsage_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t PositioningMethodAndUsage_per_ = { &PositioningMethodAndUsage_per_cons_ }; const TTCN_Typedescriptor_t PositioningMethodAndUsage_descr_ = { "@RANAP-IEs.PositioningMethodAndUsage", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PositioningMethodAndUsage_oer_, &PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositioningMethodAndUsage_default_coding(""); // No XER for PositioningDataSet_0 const int PositioningDataSet_0_oer_ext_arr_[0] = {}; const int PositioningDataSet_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositioningDataSet_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PositioningDataSet_0_oer_ext_arr_, 0, PositioningDataSet_0_oer_p_}; const TTCN_Typedescriptor_t PositioningDataSet_0_descr_ = { "@RANAP-IEs.PositioningDataSet.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &PositioningDataSet_0_oer_, &PositioningMethodAndUsage_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositioningDataSet_0_default_coding(""); UNIVERSAL_CHARSTRING PositioningDataSet_default_coding(""); const ASN_Tag_t PositionData_positioningDataDiscriminator_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t PositionData_positioningDataDiscriminator_ber_ = { 1u, PositionData_positioningDataDiscriminator_tag_ }; // No XER for PositionData_positioningDataDiscriminator const int PositionData_positioningDataDiscriminator_oer_ext_arr_[0] = {}; const int PositionData_positioningDataDiscriminator_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositionData_positioningDataDiscriminator_oer_ = { -1, TRUE, 4, FALSE, 0, 0, PositionData_positioningDataDiscriminator_oer_ext_arr_, 0, PositionData_positioningDataDiscriminator_oer_p_}; const TTCN_Typedescriptor_t PositionData_positioningDataDiscriminator_descr_ = { "@RANAP-IEs.PositionData.positioningDataDiscriminator", &PositionData_positioningDataDiscriminator_ber_, NULL, NULL, NULL, &BITSTRING_json_, &PositionData_positioningDataDiscriminator_oer_, &PositioningDataDiscriminator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositionData_positioningDataDiscriminator_default_coding(""); // No XER for PositionData const TTCN_JSONdescriptor_t PositionData_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PositionData_oer_ext_arr_[0] = {}; const int PositionData_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t PositionData_oer_ = { -1, TRUE, -1, TRUE, 3, 0, PositionData_oer_ext_arr_, 3, PositionData_oer_p_}; static const Per_Constraint PositionData_per_cons_; const ASN_PERdescriptor_t PositionData_per_ = { &PositionData_per_cons_ }; const TTCN_Typedescriptor_t PositionData_descr_ = { "@RANAP-IEs.PositionData", &SEQUENCE_ber_, NULL, NULL, NULL, &PositionData_json_, &PositionData_oer_, &PositionData_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t PositionData_positioningDataSet_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t PositionData_positioningDataSet_ber_ = { 1u, PositionData_positioningDataSet_tag_ }; // No XER for PositionData_positioningDataSet const int PositionData_positioningDataSet_oer_ext_arr_[0] = {}; const int PositionData_positioningDataSet_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositionData_positioningDataSet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PositionData_positioningDataSet_oer_ext_arr_, 0, PositionData_positioningDataSet_oer_p_}; const TTCN_Typedescriptor_t PositionData_positioningDataSet_descr_ = { "@RANAP-IEs.PositionData.positioningDataSet", &PositionData_positioningDataSet_ber_, NULL, NULL, NULL, &PositioningDataSet_json_, &PositionData_positioningDataSet_oer_, &PositioningDataSet_per_, &PositioningDataSet_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositionData_positioningDataSet_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst65", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst65.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst65.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst65.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_PositionData__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& PositionData__ExtIEs_1_criticality = const_PositionData__ExtIEs_1_criticality; INTEGER const_PositionData__ExtIEs_1_id; const INTEGER& PositionData__ExtIEs_1_id = const_PositionData__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_PositionData__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& PositionData__ExtIEs_1_presence = const_PositionData__ExtIEs_1_presence; RANAP__CommonDataTypes::Criticality const_PositionData__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& PositionData__ExtIEs_2_criticality = const_PositionData__ExtIEs_2_criticality; INTEGER const_PositionData__ExtIEs_2_id; const INTEGER& PositionData__ExtIEs_2_id = const_PositionData__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_PositionData__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& PositionData__ExtIEs_2_presence = const_PositionData__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst65.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst65", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst65.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst65_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_default_coding(""); const ASN_Tag_t PositionData_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t PositionData_iE__Extensions_ber_ = { 1u, PositionData_iE__Extensions_tag_ }; // No XER for PositionData_iE__Extensions const int PositionData_iE__Extensions_oer_ext_arr_[0] = {}; const int PositionData_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t PositionData_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PositionData_iE__Extensions_oer_ext_arr_, 0, PositionData_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t PositionData_iE__Extensions_descr_ = { "@RANAP-IEs.PositionData.iE-Extensions", &PositionData_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_json_, &PositionData_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst65_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PositionData_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING PositionData_default_coding(""); const TTCN_Typedescriptor_t& PositionDataSpecificToGERANIuMode_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING PositionDataSpecificToGERANIuMode_default_coding(""); // No XER for Priority__Class__Indicator const int Priority__Class__Indicator_oer_ext_arr_[0] = {}; const int Priority__Class__Indicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t Priority__Class__Indicator_oer_ = { -1, TRUE, 8, FALSE, 0, 0, Priority__Class__Indicator_oer_ext_arr_, 0, Priority__Class__Indicator_oer_p_}; static Per_Integer_Constraint Priority__Class__Indicator_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); static Per_BitString_Constraint Priority__Class__Indicator_per_cons_(FALSE, &Priority__Class__Indicator_size_per_cons_); const ASN_PERdescriptor_t Priority__Class__Indicator_per_ = { &Priority__Class__Indicator_per_cons_ }; const TTCN_Typedescriptor_t Priority__Class__Indicator_descr_ = { "@RANAP-IEs.Priority-Class-Indicator", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &Priority__Class__Indicator_oer_, &Priority__Class__Indicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Priority__Class__Indicator_default_coding(""); // No XER for ProvidedData const TTCN_JSONdescriptor_t ProvidedData_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ProvidedData_oer_ext_arr_[0] = {}; const int ProvidedData_oer_p_[0] = {}; const TTCN_OERdescriptor_t ProvidedData_oer_ = { -1, TRUE, -1, TRUE, 1, 0, ProvidedData_oer_ext_arr_, 0, ProvidedData_oer_p_}; static const Per_Constraint ProvidedData_per_cons_; const ASN_PERdescriptor_t ProvidedData_per_ = { &ProvidedData_per_cons_ }; const TTCN_Typedescriptor_t ProvidedData_descr_ = { "@RANAP-IEs.ProvidedData", &CHOICE_ber_, NULL, NULL, NULL, &ProvidedData_json_, &ProvidedData_oer_, &ProvidedData_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t Shared__Network__Information_pLMNs__in__shared__network_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Shared__Network__Information_pLMNs__in__shared__network_ber_ = { 1u, Shared__Network__Information_pLMNs__in__shared__network_tag_ }; // No XER for Shared__Network__Information_pLMNs__in__shared__network const int Shared__Network__Information_pLMNs__in__shared__network_oer_ext_arr_[0] = {}; const int Shared__Network__Information_pLMNs__in__shared__network_oer_p_[0] = {}; const TTCN_OERdescriptor_t Shared__Network__Information_pLMNs__in__shared__network_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Shared__Network__Information_pLMNs__in__shared__network_oer_ext_arr_, 0, Shared__Network__Information_pLMNs__in__shared__network_oer_p_}; const TTCN_Typedescriptor_t Shared__Network__Information_pLMNs__in__shared__network_descr_ = { "@RANAP-IEs.Shared-Network-Information.pLMNs-in-shared-network", &Shared__Network__Information_pLMNs__in__shared__network_ber_, NULL, NULL, NULL, &PLMNs__in__shared__network_json_, &Shared__Network__Information_pLMNs__in__shared__network_oer_, &PLMNs__in__shared__network_per_, &PLMNs__in__shared__network_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Shared__Network__Information_pLMNs__in__shared__network_default_coding(""); // No XER for Shared__Network__Information const TTCN_JSONdescriptor_t Shared__Network__Information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Shared__Network__Information_oer_ext_arr_[0] = {}; const int Shared__Network__Information_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t Shared__Network__Information_oer_ = { -1, TRUE, -1, TRUE, 2, 0, Shared__Network__Information_oer_ext_arr_, 2, Shared__Network__Information_oer_p_}; static const Per_Constraint Shared__Network__Information_per_cons_; const ASN_PERdescriptor_t Shared__Network__Information_per_ = { &Shared__Network__Information_per_cons_ }; const TTCN_Typedescriptor_t Shared__Network__Information_descr_ = { "@RANAP-IEs.Shared-Network-Information", &SEQUENCE_ber_, NULL, NULL, NULL, &Shared__Network__Information_json_, &Shared__Network__Information_oer_, &Shared__Network__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst66", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst66.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst66.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst66.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst66.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst66", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst66.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst66_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_default_coding(""); const ASN_Tag_t Shared__Network__Information_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Shared__Network__Information_iE__Extensions_ber_ = { 1u, Shared__Network__Information_iE__Extensions_tag_ }; // No XER for Shared__Network__Information_iE__Extensions const int Shared__Network__Information_iE__Extensions_oer_ext_arr_[0] = {}; const int Shared__Network__Information_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Shared__Network__Information_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Shared__Network__Information_iE__Extensions_oer_ext_arr_, 0, Shared__Network__Information_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Shared__Network__Information_iE__Extensions_descr_ = { "@RANAP-IEs.Shared-Network-Information.iE-Extensions", &Shared__Network__Information_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_json_, &Shared__Network__Information_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst66_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Shared__Network__Information_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Shared__Network__Information_default_coding(""); const ASN_Tag_t ProvidedData_shared__network__information_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t ProvidedData_shared__network__information_ber_ = { 1u, ProvidedData_shared__network__information_tag_ }; // No XER for ProvidedData_shared__network__information const int ProvidedData_shared__network__information_oer_ext_arr_[0] = {}; const int ProvidedData_shared__network__information_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t ProvidedData_shared__network__information_oer_ = { -1, TRUE, -1, TRUE, 2, 0, ProvidedData_shared__network__information_oer_ext_arr_, 2, ProvidedData_shared__network__information_oer_p_}; const TTCN_Typedescriptor_t ProvidedData_shared__network__information_descr_ = { "@RANAP-IEs.ProvidedData.shared-network-information", &ProvidedData_shared__network__information_ber_, NULL, NULL, NULL, &Shared__Network__Information_json_, &ProvidedData_shared__network__information_oer_, &Shared__Network__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ProvidedData_shared__network__information_default_coding(""); UNIVERSAL_CHARSTRING ProvidedData_default_coding(""); // No XER for PowerSavingIndicator const TTCN_JSONdescriptor_t PowerSavingIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int PowerSavingIndicator_oer_ext_arr_[0] = {}; const int PowerSavingIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t PowerSavingIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PowerSavingIndicator_oer_ext_arr_, 0, PowerSavingIndicator_oer_p_}; static const Per_Constraint PowerSavingIndicator_per_cons_; const ASN_PERdescriptor_t PowerSavingIndicator_per_ = { &PowerSavingIndicator_per_cons_ }; const TTCN_Typedescriptor_t PowerSavingIndicator_descr_ = { "@RANAP-IEs.PowerSavingIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &PowerSavingIndicator_json_, &PowerSavingIndicator_oer_, &PowerSavingIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING PowerSavingIndicator_default_coding(""); // No XER for P__TMSI const int P__TMSI_oer_ext_arr_[0] = {}; const int P__TMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t P__TMSI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, P__TMSI_oer_ext_arr_, 0, P__TMSI_oer_p_}; static Per_Integer_Constraint P__TMSI_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); const ASN_PERdescriptor_t P__TMSI_per_ = { &P__TMSI_per_cons_ }; const TTCN_Typedescriptor_t P__TMSI_descr_ = { "@RANAP-IEs.P-TMSI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &P__TMSI_oer_, &P__TMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING P__TMSI_default_coding(""); // No XER for RABDataVolumeReport const TTCN_JSONdescriptor_t RABDataVolumeReport_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RABDataVolumeReport_oer_ext_arr_[0] = {}; const int RABDataVolumeReport_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABDataVolumeReport_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABDataVolumeReport_oer_ext_arr_, 0, RABDataVolumeReport_oer_p_}; static Per_Integer_Constraint RABDataVolumeReport_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t RABDataVolumeReport_per_ = { &RABDataVolumeReport_per_cons_ }; const TTCN_Typedescriptor_t RABDataVolumeReport_descr_ = { "@RANAP-IEs.RABDataVolumeReport", &SEQUENCE_ber_, NULL, NULL, NULL, &RABDataVolumeReport_json_, &RABDataVolumeReport_oer_, &RABDataVolumeReport_per_, &RABDataVolumeReport_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for UnsuccessfullyTransmittedDataVolume const int UnsuccessfullyTransmittedDataVolume_oer_ext_arr_[0] = {}; const int UnsuccessfullyTransmittedDataVolume_oer_p_[0] = {}; const TTCN_OERdescriptor_t UnsuccessfullyTransmittedDataVolume_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UnsuccessfullyTransmittedDataVolume_oer_ext_arr_, 0, UnsuccessfullyTransmittedDataVolume_oer_p_}; static Per_Integer_Constraint UnsuccessfullyTransmittedDataVolume_per_cons_(new INTEGER(0), new INTEGER("4294967295"), FALSE); const ASN_PERdescriptor_t UnsuccessfullyTransmittedDataVolume_per_ = { &UnsuccessfullyTransmittedDataVolume_per_cons_ }; const TTCN_Typedescriptor_t UnsuccessfullyTransmittedDataVolume_descr_ = { "@RANAP-IEs.UnsuccessfullyTransmittedDataVolume", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UnsuccessfullyTransmittedDataVolume_oer_, &UnsuccessfullyTransmittedDataVolume_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UnsuccessfullyTransmittedDataVolume_default_coding(""); const ASN_Tag_t RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_ber_ = { 1u, RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_tag_ }; // No XER for RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume const int RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_ext_arr_[0] = {}; const int RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_ = { 4, FALSE, -1, FALSE, 0, 0, RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_ext_arr_, 0, RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_p_}; const TTCN_Typedescriptor_t RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_descr_ = { "@RANAP-IEs.RABDataVolumeReport.SEQUENCE.dl-UnsuccessfullyTransmittedDataVolume", &RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_ber_, NULL, NULL, NULL, &INTEGER_json_, &RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_oer_, &UnsuccessfullyTransmittedDataVolume_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABDataVolumeReport_0_dl__UnsuccessfullyTransmittedDataVolume_default_coding(""); // No XER for RABDataVolumeReport_0 const TTCN_JSONdescriptor_t RABDataVolumeReport_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RABDataVolumeReport_0_oer_ext_arr_[0] = {}; const int RABDataVolumeReport_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RABDataVolumeReport_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RABDataVolumeReport_0_oer_ext_arr_, 3, RABDataVolumeReport_0_oer_p_}; static const Per_Constraint RABDataVolumeReport_0_per_cons_; const ASN_PERdescriptor_t RABDataVolumeReport_0_per_ = { &RABDataVolumeReport_0_per_cons_ }; const TTCN_Typedescriptor_t RABDataVolumeReport_0_descr_ = { "@RANAP-IEs.RABDataVolumeReport.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &RABDataVolumeReport_0_json_, &RABDataVolumeReport_0_oer_, &RABDataVolumeReport_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RABDataVolumeReport_0_dataVolumeReference_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RABDataVolumeReport_0_dataVolumeReference_ber_ = { 1u, RABDataVolumeReport_0_dataVolumeReference_tag_ }; // No XER for RABDataVolumeReport_0_dataVolumeReference const int RABDataVolumeReport_0_dataVolumeReference_oer_ext_arr_[0] = {}; const int RABDataVolumeReport_0_dataVolumeReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABDataVolumeReport_0_dataVolumeReference_oer_ = { 1, FALSE, -1, FALSE, 0, 0, RABDataVolumeReport_0_dataVolumeReference_oer_ext_arr_, 0, RABDataVolumeReport_0_dataVolumeReference_oer_p_}; const TTCN_Typedescriptor_t RABDataVolumeReport_0_dataVolumeReference_descr_ = { "@RANAP-IEs.RABDataVolumeReport.SEQUENCE.dataVolumeReference", &RABDataVolumeReport_0_dataVolumeReference_ber_, NULL, NULL, NULL, &INTEGER_json_, &RABDataVolumeReport_0_dataVolumeReference_oer_, &DataVolumeReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABDataVolumeReport_0_dataVolumeReference_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst67", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst67.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst67.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst67.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst67.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst67", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst67.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst67_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_default_coding(""); const ASN_Tag_t RABDataVolumeReport_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RABDataVolumeReport_0_iE__Extensions_ber_ = { 1u, RABDataVolumeReport_0_iE__Extensions_tag_ }; // No XER for RABDataVolumeReport_0_iE__Extensions const int RABDataVolumeReport_0_iE__Extensions_oer_ext_arr_[0] = {}; const int RABDataVolumeReport_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABDataVolumeReport_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABDataVolumeReport_0_iE__Extensions_oer_ext_arr_, 0, RABDataVolumeReport_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RABDataVolumeReport_0_iE__Extensions_descr_ = { "@RANAP-IEs.RABDataVolumeReport.SEQUENCE.iE-Extensions", &RABDataVolumeReport_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_json_, &RABDataVolumeReport_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst67_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABDataVolumeReport_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RABDataVolumeReport_0_default_coding(""); UNIVERSAL_CHARSTRING RABDataVolumeReport_default_coding(""); // No XER for RAB__ID const int RAB__ID_oer_ext_arr_[0] = {}; const int RAB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__ID_oer_ = { -1, TRUE, 8, FALSE, 0, 0, RAB__ID_oer_ext_arr_, 0, RAB__ID_oer_p_}; static Per_Integer_Constraint RAB__ID_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(8), FALSE); static Per_BitString_Constraint RAB__ID_per_cons_(FALSE, &RAB__ID_size_per_cons_); const ASN_PERdescriptor_t RAB__ID_per_ = { &RAB__ID_per_cons_ }; const TTCN_Typedescriptor_t RAB__ID_descr_ = { "@RANAP-IEs.RAB-ID", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &RAB__ID_oer_, &RAB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__ID_default_coding(""); // No XER for RABParametersList const TTCN_JSONdescriptor_t RABParametersList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RABParametersList_oer_ext_arr_[0] = {}; const int RABParametersList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABParametersList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABParametersList_oer_ext_arr_, 0, RABParametersList_oer_p_}; static Per_Integer_Constraint RABParametersList_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t RABParametersList_per_ = { &RABParametersList_per_cons_ }; const TTCN_Typedescriptor_t RABParametersList_descr_ = { "@RANAP-IEs.RABParametersList", &SEQUENCE_ber_, NULL, NULL, NULL, &RABParametersList_json_, &RABParametersList_oer_, &RABParametersList_per_, &RABParametersList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RABParametersList_0_rab__Id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RABParametersList_0_rab__Id_ber_ = { 1u, RABParametersList_0_rab__Id_tag_ }; // No XER for RABParametersList_0_rab__Id const int RABParametersList_0_rab__Id_oer_ext_arr_[0] = {}; const int RABParametersList_0_rab__Id_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABParametersList_0_rab__Id_oer_ = { -1, TRUE, 8, FALSE, 0, 0, RABParametersList_0_rab__Id_oer_ext_arr_, 0, RABParametersList_0_rab__Id_oer_p_}; const TTCN_Typedescriptor_t RABParametersList_0_rab__Id_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE.rab-Id", &RABParametersList_0_rab__Id_ber_, NULL, NULL, NULL, &BITSTRING_json_, &RABParametersList_0_rab__Id_oer_, &RAB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABParametersList_0_rab__Id_default_coding(""); const ASN_Tag_t RABParametersList_0_cn__domain_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RABParametersList_0_cn__domain_ber_ = { 1u, RABParametersList_0_cn__domain_tag_ }; // No XER for RABParametersList_0_cn__domain const int RABParametersList_0_cn__domain_oer_ext_arr_[0] = {}; const int RABParametersList_0_cn__domain_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABParametersList_0_cn__domain_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABParametersList_0_cn__domain_oer_ext_arr_, 0, RABParametersList_0_cn__domain_oer_p_}; const TTCN_Typedescriptor_t RABParametersList_0_cn__domain_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE.cn-domain", &RABParametersList_0_cn__domain_ber_, NULL, NULL, NULL, &CN__DomainIndicator_json_, &RABParametersList_0_cn__domain_oer_, &CN__DomainIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABParametersList_0_cn__domain_default_coding(""); // No XER for RABParametersList_0 const TTCN_JSONdescriptor_t RABParametersList_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RABParametersList_0_oer_ext_arr_[0] = {}; const int RABParametersList_0_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t RABParametersList_0_oer_ = { -1, TRUE, -1, TRUE, 5, 0, RABParametersList_0_oer_ext_arr_, 5, RABParametersList_0_oer_p_}; static const Per_Constraint RABParametersList_0_per_cons_; const ASN_PERdescriptor_t RABParametersList_0_per_ = { &RABParametersList_0_per_cons_ }; const TTCN_Typedescriptor_t RABParametersList_0_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &RABParametersList_0_json_, &RABParametersList_0_oer_, &RABParametersList_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RABParametersList_0_rabDataVolumeReport_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RABParametersList_0_rabDataVolumeReport_ber_ = { 1u, RABParametersList_0_rabDataVolumeReport_tag_ }; // No XER for RABParametersList_0_rabDataVolumeReport const int RABParametersList_0_rabDataVolumeReport_oer_ext_arr_[0] = {}; const int RABParametersList_0_rabDataVolumeReport_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABParametersList_0_rabDataVolumeReport_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABParametersList_0_rabDataVolumeReport_oer_ext_arr_, 0, RABParametersList_0_rabDataVolumeReport_oer_p_}; const TTCN_Typedescriptor_t RABParametersList_0_rabDataVolumeReport_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE.rabDataVolumeReport", &RABParametersList_0_rabDataVolumeReport_ber_, NULL, NULL, NULL, &RABDataVolumeReport_json_, &RABParametersList_0_rabDataVolumeReport_oer_, &RABDataVolumeReport_per_, &RABDataVolumeReport_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABParametersList_0_rabDataVolumeReport_default_coding(""); const ASN_Tag_t UPInformation_frameSeqNoUL_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UPInformation_frameSeqNoUL_ber_ = { 1u, UPInformation_frameSeqNoUL_tag_ }; // No XER for UPInformation_frameSeqNoUL const int UPInformation_frameSeqNoUL_oer_ext_arr_[0] = {}; const int UPInformation_frameSeqNoUL_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_frameSeqNoUL_oer_ = { 1, FALSE, -1, FALSE, 0, 0, UPInformation_frameSeqNoUL_oer_ext_arr_, 0, UPInformation_frameSeqNoUL_oer_p_}; const TTCN_Typedescriptor_t UPInformation_frameSeqNoUL_descr_ = { "@RANAP-IEs.UPInformation.frameSeqNoUL", &UPInformation_frameSeqNoUL_ber_, NULL, NULL, NULL, &INTEGER_json_, &UPInformation_frameSeqNoUL_oer_, &FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_frameSeqNoUL_default_coding(""); const ASN_Tag_t UPInformation_frameSeqNoDL_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UPInformation_frameSeqNoDL_ber_ = { 1u, UPInformation_frameSeqNoDL_tag_ }; // No XER for UPInformation_frameSeqNoDL const int UPInformation_frameSeqNoDL_oer_ext_arr_[0] = {}; const int UPInformation_frameSeqNoDL_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_frameSeqNoDL_oer_ = { 1, FALSE, -1, FALSE, 0, 0, UPInformation_frameSeqNoDL_oer_ext_arr_, 0, UPInformation_frameSeqNoDL_oer_p_}; const TTCN_Typedescriptor_t UPInformation_frameSeqNoDL_descr_ = { "@RANAP-IEs.UPInformation.frameSeqNoDL", &UPInformation_frameSeqNoDL_ber_, NULL, NULL, NULL, &INTEGER_json_, &UPInformation_frameSeqNoDL_oer_, &FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_frameSeqNoDL_default_coding(""); const ASN_Tag_t UPInformation_pdu14FrameSeqNoUL_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UPInformation_pdu14FrameSeqNoUL_ber_ = { 1u, UPInformation_pdu14FrameSeqNoUL_tag_ }; // No XER for UPInformation_pdu14FrameSeqNoUL const int UPInformation_pdu14FrameSeqNoUL_oer_ext_arr_[0] = {}; const int UPInformation_pdu14FrameSeqNoUL_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_pdu14FrameSeqNoUL_oer_ = { 1, FALSE, -1, FALSE, 0, 0, UPInformation_pdu14FrameSeqNoUL_oer_ext_arr_, 0, UPInformation_pdu14FrameSeqNoUL_oer_p_}; const TTCN_Typedescriptor_t UPInformation_pdu14FrameSeqNoUL_descr_ = { "@RANAP-IEs.UPInformation.pdu14FrameSeqNoUL", &UPInformation_pdu14FrameSeqNoUL_ber_, NULL, NULL, NULL, &INTEGER_json_, &UPInformation_pdu14FrameSeqNoUL_oer_, &PDUType14FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_pdu14FrameSeqNoUL_default_coding(""); const ASN_Tag_t UPInformation_pdu14FrameSeqNoDL_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t UPInformation_pdu14FrameSeqNoDL_ber_ = { 1u, UPInformation_pdu14FrameSeqNoDL_tag_ }; // No XER for UPInformation_pdu14FrameSeqNoDL const int UPInformation_pdu14FrameSeqNoDL_oer_ext_arr_[0] = {}; const int UPInformation_pdu14FrameSeqNoDL_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_pdu14FrameSeqNoDL_oer_ = { 1, FALSE, -1, FALSE, 0, 0, UPInformation_pdu14FrameSeqNoDL_oer_ext_arr_, 0, UPInformation_pdu14FrameSeqNoDL_oer_p_}; const TTCN_Typedescriptor_t UPInformation_pdu14FrameSeqNoDL_descr_ = { "@RANAP-IEs.UPInformation.pdu14FrameSeqNoDL", &UPInformation_pdu14FrameSeqNoDL_ber_, NULL, NULL, NULL, &INTEGER_json_, &UPInformation_pdu14FrameSeqNoDL_oer_, &PDUType14FrameSequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_pdu14FrameSeqNoDL_default_coding(""); const ASN_Tag_t UPInformation_dataPDUType_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t UPInformation_dataPDUType_ber_ = { 1u, UPInformation_dataPDUType_tag_ }; // No XER for UPInformation_dataPDUType const int UPInformation_dataPDUType_oer_ext_arr_[0] = {}; const int UPInformation_dataPDUType_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_dataPDUType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UPInformation_dataPDUType_oer_ext_arr_, 0, UPInformation_dataPDUType_oer_p_}; const TTCN_Typedescriptor_t UPInformation_dataPDUType_descr_ = { "@RANAP-IEs.UPInformation.dataPDUType", &UPInformation_dataPDUType_ber_, NULL, NULL, NULL, &DataPDUType_json_, &UPInformation_dataPDUType_oer_, &DataPDUType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_dataPDUType_default_coding(""); const TTCN_Typedescriptor_t& UPInitialisationFrame_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING UPInitialisationFrame_default_coding(""); const ASN_Tag_t UPInformation_upinitialisationFrame_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t UPInformation_upinitialisationFrame_ber_ = { 1u, UPInformation_upinitialisationFrame_tag_ }; // No XER for UPInformation_upinitialisationFrame const int UPInformation_upinitialisationFrame_oer_ext_arr_[0] = {}; const int UPInformation_upinitialisationFrame_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_upinitialisationFrame_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UPInformation_upinitialisationFrame_oer_ext_arr_, 0, UPInformation_upinitialisationFrame_oer_p_}; const TTCN_Typedescriptor_t UPInformation_upinitialisationFrame_descr_ = { "@RANAP-IEs.UPInformation.upinitialisationFrame", &UPInformation_upinitialisationFrame_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UPInformation_upinitialisationFrame_oer_, &OCTETSTRING_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_upinitialisationFrame_default_coding(""); // No XER for UPInformation const TTCN_JSONdescriptor_t UPInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UPInformation_oer_ext_arr_[0] = {}; const int UPInformation_oer_p_[7] = {0, 1, 2, 3, 4, 5, 6}; const TTCN_OERdescriptor_t UPInformation_oer_ = { -1, TRUE, -1, TRUE, 7, 0, UPInformation_oer_ext_arr_, 7, UPInformation_oer_p_}; static const Per_Constraint UPInformation_per_cons_; const ASN_PERdescriptor_t UPInformation_per_ = { &UPInformation_per_cons_ }; const TTCN_Typedescriptor_t UPInformation_descr_ = { "@RANAP-IEs.UPInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &UPInformation_json_, &UPInformation_oer_, &UPInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst68", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst68.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst68.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst68.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TimingDifferenceULDL const int TimingDifferenceULDL_oer_ext_arr_[0] = {}; const int TimingDifferenceULDL_oer_p_[0] = {}; const TTCN_OERdescriptor_t TimingDifferenceULDL_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TimingDifferenceULDL_oer_ext_arr_, 0, TimingDifferenceULDL_oer_p_}; static Per_Integer_Constraint TimingDifferenceULDL_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t TimingDifferenceULDL_per_ = { &TimingDifferenceULDL_per_cons_ }; const TTCN_Typedescriptor_t TimingDifferenceULDL_descr_ = { "@RANAP-IEs.TimingDifferenceULDL", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TimingDifferenceULDL_oer_, &TimingDifferenceULDL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TimingDifferenceULDL_default_coding(""); // No XER for UPInformation__ExtIEs_1_Extension const int UPInformation__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int UPInformation__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation__ExtIEs_1_Extension_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UPInformation__ExtIEs_1_Extension_oer_ext_arr_, 0, UPInformation__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t UPInformation__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.UPInformation-ExtIEs.1.&Extension", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UPInformation__ExtIEs_1_Extension_oer_, &TimingDifferenceULDL_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_UPInformation__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& UPInformation__ExtIEs_1_criticality = const_UPInformation__ExtIEs_1_criticality; INTEGER const_UPInformation__ExtIEs_1_id; const INTEGER& UPInformation__ExtIEs_1_id = const_UPInformation__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_UPInformation__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& UPInformation__ExtIEs_1_presence = const_UPInformation__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst68.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst68", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst68.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst68_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_default_coding(""); const ASN_Tag_t UPInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t UPInformation_iE__Extensions_ber_ = { 1u, UPInformation_iE__Extensions_tag_ }; // No XER for UPInformation_iE__Extensions const int UPInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int UPInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UPInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UPInformation_iE__Extensions_oer_ext_arr_, 0, UPInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t UPInformation_iE__Extensions_descr_ = { "@RANAP-IEs.UPInformation.iE-Extensions", &UPInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_json_, &UPInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst68_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UPInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING UPInformation_default_coding(""); const ASN_Tag_t RABParametersList_0_upInformation_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t RABParametersList_0_upInformation_ber_ = { 1u, RABParametersList_0_upInformation_tag_ }; // No XER for RABParametersList_0_upInformation const int RABParametersList_0_upInformation_oer_ext_arr_[0] = {}; const int RABParametersList_0_upInformation_oer_p_[7] = {0, 1, 2, 3, 4, 5, 6}; const TTCN_OERdescriptor_t RABParametersList_0_upInformation_oer_ = { -1, TRUE, -1, TRUE, 7, 0, RABParametersList_0_upInformation_oer_ext_arr_, 7, RABParametersList_0_upInformation_oer_p_}; const TTCN_Typedescriptor_t RABParametersList_0_upInformation_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE.upInformation", &RABParametersList_0_upInformation_ber_, NULL, NULL, NULL, &UPInformation_json_, &RABParametersList_0_upInformation_oer_, &UPInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABParametersList_0_upInformation_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst69", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst69.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst69.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst69.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst69.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst69", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst69.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst69_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_default_coding(""); const ASN_Tag_t RABParametersList_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t RABParametersList_0_iE__Extensions_ber_ = { 1u, RABParametersList_0_iE__Extensions_tag_ }; // No XER for RABParametersList_0_iE__Extensions const int RABParametersList_0_iE__Extensions_oer_ext_arr_[0] = {}; const int RABParametersList_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RABParametersList_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RABParametersList_0_iE__Extensions_oer_ext_arr_, 0, RABParametersList_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RABParametersList_0_iE__Extensions_descr_ = { "@RANAP-IEs.RABParametersList.SEQUENCE.iE-Extensions", &RABParametersList_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_json_, &RABParametersList_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst69_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RABParametersList_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RABParametersList_0_default_coding(""); UNIVERSAL_CHARSTRING RABParametersList_default_coding(""); // No XER for RAB__TrCH__Mapping const TTCN_JSONdescriptor_t RAB__TrCH__Mapping_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__TrCH__Mapping_oer_ext_arr_[0] = {}; const int RAB__TrCH__Mapping_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__TrCH__Mapping_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__TrCH__Mapping_oer_ext_arr_, 0, RAB__TrCH__Mapping_oer_p_}; static Per_Integer_Constraint RAB__TrCH__Mapping_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t RAB__TrCH__Mapping_per_ = { &RAB__TrCH__Mapping_per_cons_ }; const TTCN_Typedescriptor_t RAB__TrCH__Mapping_descr_ = { "@RANAP-IEs.RAB-TrCH-Mapping", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__TrCH__Mapping_json_, &RAB__TrCH__Mapping_oer_, &RAB__TrCH__Mapping_per_, &RAB__TrCH__Mapping_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RAB__TrCH__MappingItem_rAB__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RAB__TrCH__MappingItem_rAB__ID_ber_ = { 1u, RAB__TrCH__MappingItem_rAB__ID_tag_ }; // No XER for RAB__TrCH__MappingItem_rAB__ID const int RAB__TrCH__MappingItem_rAB__ID_oer_ext_arr_[0] = {}; const int RAB__TrCH__MappingItem_rAB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__TrCH__MappingItem_rAB__ID_oer_ = { -1, TRUE, 8, FALSE, 0, 0, RAB__TrCH__MappingItem_rAB__ID_oer_ext_arr_, 0, RAB__TrCH__MappingItem_rAB__ID_oer_p_}; const TTCN_Typedescriptor_t RAB__TrCH__MappingItem_rAB__ID_descr_ = { "@RANAP-IEs.RAB-TrCH-MappingItem.rAB-ID", &RAB__TrCH__MappingItem_rAB__ID_ber_, NULL, NULL, NULL, &BITSTRING_json_, &RAB__TrCH__MappingItem_rAB__ID_oer_, &RAB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__TrCH__MappingItem_rAB__ID_default_coding(""); // No XER for TrCH__ID__List const TTCN_JSONdescriptor_t TrCH__ID__List_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TrCH__ID__List_oer_ext_arr_[0] = {}; const int TrCH__ID__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TrCH__ID__List_oer_ext_arr_, 0, TrCH__ID__List_oer_p_}; static Per_Integer_Constraint TrCH__ID__List_per_cons_(new INTEGER(1), new INTEGER(7), FALSE); const ASN_PERdescriptor_t TrCH__ID__List_per_ = { &TrCH__ID__List_per_cons_ }; const TTCN_Typedescriptor_t TrCH__ID__List_descr_ = { "@RANAP-IEs.TrCH-ID-List", &SEQUENCE_ber_, NULL, NULL, NULL, &TrCH__ID__List_json_, &TrCH__ID__List_oer_, &TrCH__ID__List_per_, &TrCH__ID__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TrCH__ID const TTCN_JSONdescriptor_t TrCH__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TrCH__ID_oer_ext_arr_[0] = {}; const int TrCH__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TrCH__ID_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TrCH__ID_oer_ext_arr_, 4, TrCH__ID_oer_p_}; static const Per_Constraint TrCH__ID_per_cons_; const ASN_PERdescriptor_t TrCH__ID_per_ = { &TrCH__ID_per_cons_ }; const TTCN_Typedescriptor_t TrCH__ID_descr_ = { "@RANAP-IEs.TrCH-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &TrCH__ID_json_, &TrCH__ID_oer_, &TrCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TrCH__ID_dCH__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TrCH__ID_dCH__ID_ber_ = { 1u, TrCH__ID_dCH__ID_tag_ }; // No XER for TrCH__ID_dCH__ID const int TrCH__ID_dCH__ID_oer_ext_arr_[0] = {}; const int TrCH__ID_dCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID_dCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrCH__ID_dCH__ID_oer_ext_arr_, 0, TrCH__ID_dCH__ID_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID_dCH__ID_descr_ = { "@RANAP-IEs.TrCH-ID.dCH-ID", &TrCH__ID_dCH__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrCH__ID_dCH__ID_oer_, &DCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrCH__ID_dCH__ID_default_coding(""); const ASN_Tag_t TrCH__ID_dSCH__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TrCH__ID_dSCH__ID_ber_ = { 1u, TrCH__ID_dSCH__ID_tag_ }; // No XER for TrCH__ID_dSCH__ID const int TrCH__ID_dSCH__ID_oer_ext_arr_[0] = {}; const int TrCH__ID_dSCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID_dSCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrCH__ID_dSCH__ID_oer_ext_arr_, 0, TrCH__ID_dSCH__ID_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID_dSCH__ID_descr_ = { "@RANAP-IEs.TrCH-ID.dSCH-ID", &TrCH__ID_dSCH__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrCH__ID_dSCH__ID_oer_, &DSCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrCH__ID_dSCH__ID_default_coding(""); // No XER for USCH__ID const int USCH__ID_oer_ext_arr_[0] = {}; const int USCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t USCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, USCH__ID_oer_ext_arr_, 0, USCH__ID_oer_p_}; static Per_Integer_Constraint USCH__ID_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t USCH__ID_per_ = { &USCH__ID_per_cons_ }; const TTCN_Typedescriptor_t USCH__ID_descr_ = { "@RANAP-IEs.USCH-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &USCH__ID_oer_, &USCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING USCH__ID_default_coding(""); const ASN_Tag_t TrCH__ID_uSCH__ID_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TrCH__ID_uSCH__ID_ber_ = { 1u, TrCH__ID_uSCH__ID_tag_ }; // No XER for TrCH__ID_uSCH__ID const int TrCH__ID_uSCH__ID_oer_ext_arr_[0] = {}; const int TrCH__ID_uSCH__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID_uSCH__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrCH__ID_uSCH__ID_oer_ext_arr_, 0, TrCH__ID_uSCH__ID_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID_uSCH__ID_descr_ = { "@RANAP-IEs.TrCH-ID.uSCH-ID", &TrCH__ID_uSCH__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrCH__ID_uSCH__ID_oer_, &USCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrCH__ID_uSCH__ID_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst70", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst70.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst70.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst70.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TrCH__ID__ExtIEs_1_Extension const int TrCH__ID__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int TrCH__ID__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID__ExtIEs_1_Extension_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrCH__ID__ExtIEs_1_Extension_oer_ext_arr_, 0, TrCH__ID__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.TrCH-ID-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrCH__ID__ExtIEs_1_Extension_oer_, &HS__DSCH__MAC__d__Flow__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_TrCH__ID__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& TrCH__ID__ExtIEs_1_criticality = const_TrCH__ID__ExtIEs_1_criticality; INTEGER const_TrCH__ID__ExtIEs_1_id; const INTEGER& TrCH__ID__ExtIEs_1_id = const_TrCH__ID__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_TrCH__ID__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& TrCH__ID__ExtIEs_1_presence = const_TrCH__ID__ExtIEs_1_presence; // No XER for TrCH__ID__ExtIEs_2_Extension const int TrCH__ID__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int TrCH__ID__ExtIEs_2_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID__ExtIEs_2_Extension_oer_ = { 1, FALSE, -1, FALSE, 0, 0, TrCH__ID__ExtIEs_2_Extension_oer_ext_arr_, 0, TrCH__ID__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.TrCH-ID-ExtIEs.2.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &TrCH__ID__ExtIEs_2_Extension_oer_, &E__DCH__MAC__d__Flow__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_TrCH__ID__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& TrCH__ID__ExtIEs_2_criticality = const_TrCH__ID__ExtIEs_2_criticality; INTEGER const_TrCH__ID__ExtIEs_2_id; const INTEGER& TrCH__ID__ExtIEs_2_id = const_TrCH__ID__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_TrCH__ID__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& TrCH__ID__ExtIEs_2_presence = const_TrCH__ID__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst70.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst70", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst70.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst70_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_default_coding(""); const ASN_Tag_t TrCH__ID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t TrCH__ID_iE__Extensions_ber_ = { 1u, TrCH__ID_iE__Extensions_tag_ }; // No XER for TrCH__ID_iE__Extensions const int TrCH__ID_iE__Extensions_oer_ext_arr_[0] = {}; const int TrCH__ID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TrCH__ID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TrCH__ID_iE__Extensions_oer_ext_arr_, 0, TrCH__ID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID_iE__Extensions_descr_ = { "@RANAP-IEs.TrCH-ID.iE-Extensions", &TrCH__ID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_json_, &TrCH__ID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst70_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrCH__ID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TrCH__ID_default_coding(""); // No XER for TrCH__ID__List_0 const int TrCH__ID__List_0_oer_ext_arr_[0] = {}; const int TrCH__ID__List_0_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TrCH__ID__List_0_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TrCH__ID__List_0_oer_ext_arr_, 4, TrCH__ID__List_0_oer_p_}; const TTCN_Typedescriptor_t TrCH__ID__List_0_descr_ = { "@RANAP-IEs.TrCH-ID-List.", &SEQUENCE_ber_, NULL, NULL, NULL, &TrCH__ID_json_, &TrCH__ID__List_0_oer_, &TrCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TrCH__ID__List_0_default_coding(""); UNIVERSAL_CHARSTRING TrCH__ID__List_default_coding(""); const ASN_Tag_t RAB__TrCH__MappingItem_trCH__ID__List_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RAB__TrCH__MappingItem_trCH__ID__List_ber_ = { 1u, RAB__TrCH__MappingItem_trCH__ID__List_tag_ }; // No XER for RAB__TrCH__MappingItem_trCH__ID__List const int RAB__TrCH__MappingItem_trCH__ID__List_oer_ext_arr_[0] = {}; const int RAB__TrCH__MappingItem_trCH__ID__List_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__TrCH__MappingItem_trCH__ID__List_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__TrCH__MappingItem_trCH__ID__List_oer_ext_arr_, 0, RAB__TrCH__MappingItem_trCH__ID__List_oer_p_}; const TTCN_Typedescriptor_t RAB__TrCH__MappingItem_trCH__ID__List_descr_ = { "@RANAP-IEs.RAB-TrCH-MappingItem.trCH-ID-List", &RAB__TrCH__MappingItem_trCH__ID__List_ber_, NULL, NULL, NULL, &TrCH__ID__List_json_, &RAB__TrCH__MappingItem_trCH__ID__List_oer_, &TrCH__ID__List_per_, &TrCH__ID__List_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__TrCH__MappingItem_trCH__ID__List_default_coding(""); // No XER for RAB__TrCH__MappingItem const TTCN_JSONdescriptor_t RAB__TrCH__MappingItem_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAB__TrCH__MappingItem_oer_ext_arr_[0] = {}; const int RAB__TrCH__MappingItem_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RAB__TrCH__MappingItem_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RAB__TrCH__MappingItem_oer_ext_arr_, 3, RAB__TrCH__MappingItem_oer_p_}; static const Per_Constraint RAB__TrCH__MappingItem_per_cons_; const ASN_PERdescriptor_t RAB__TrCH__MappingItem_per_ = { &RAB__TrCH__MappingItem_per_cons_ }; const TTCN_Typedescriptor_t RAB__TrCH__MappingItem_descr_ = { "@RANAP-IEs.RAB-TrCH-MappingItem", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__TrCH__MappingItem_json_, &RAB__TrCH__MappingItem_oer_, &RAB__TrCH__MappingItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst71", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst71.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst71.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst71.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_RAB__TrCH__MappingItem__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& RAB__TrCH__MappingItem__ExtIEs_1_criticality = const_RAB__TrCH__MappingItem__ExtIEs_1_criticality; INTEGER const_RAB__TrCH__MappingItem__ExtIEs_1_id; const INTEGER& RAB__TrCH__MappingItem__ExtIEs_1_id = const_RAB__TrCH__MappingItem__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_RAB__TrCH__MappingItem__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& RAB__TrCH__MappingItem__ExtIEs_1_presence = const_RAB__TrCH__MappingItem__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst71.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst71", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst71.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst71_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_default_coding(""); const ASN_Tag_t RAB__TrCH__MappingItem_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RAB__TrCH__MappingItem_iE__Extensions_ber_ = { 1u, RAB__TrCH__MappingItem_iE__Extensions_tag_ }; // No XER for RAB__TrCH__MappingItem_iE__Extensions const int RAB__TrCH__MappingItem_iE__Extensions_oer_ext_arr_[0] = {}; const int RAB__TrCH__MappingItem_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAB__TrCH__MappingItem_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAB__TrCH__MappingItem_iE__Extensions_oer_ext_arr_, 0, RAB__TrCH__MappingItem_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RAB__TrCH__MappingItem_iE__Extensions_descr_ = { "@RANAP-IEs.RAB-TrCH-MappingItem.iE-Extensions", &RAB__TrCH__MappingItem_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_json_, &RAB__TrCH__MappingItem_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst71_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__TrCH__MappingItem_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RAB__TrCH__MappingItem_default_coding(""); // No XER for RAB__TrCH__Mapping_0 const int RAB__TrCH__Mapping_0_oer_ext_arr_[0] = {}; const int RAB__TrCH__Mapping_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RAB__TrCH__Mapping_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RAB__TrCH__Mapping_0_oer_ext_arr_, 3, RAB__TrCH__Mapping_0_oer_p_}; const TTCN_Typedescriptor_t RAB__TrCH__Mapping_0_descr_ = { "@RANAP-IEs.RAB-TrCH-Mapping.", &SEQUENCE_ber_, NULL, NULL, NULL, &RAB__TrCH__MappingItem_json_, &RAB__TrCH__Mapping_0_oer_, &RAB__TrCH__MappingItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAB__TrCH__Mapping_0_default_coding(""); UNIVERSAL_CHARSTRING RAB__TrCH__Mapping_default_coding(""); // No XER for RAListofIdleModeUEs const TTCN_JSONdescriptor_t RAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int RAListofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAListofIdleModeUEs_oer_ = { -1, TRUE, -1, TRUE, 2, 0, RAListofIdleModeUEs_oer_ext_arr_, 0, RAListofIdleModeUEs_oer_p_}; static const Per_Constraint RAListofIdleModeUEs_per_cons_; const ASN_PERdescriptor_t RAListofIdleModeUEs_per_ = { &RAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t RAListofIdleModeUEs_descr_ = { "@RANAP-IEs.RAListofIdleModeUEs", &CHOICE_ber_, NULL, NULL, NULL, &RAListofIdleModeUEs_json_, &RAListofIdleModeUEs_oer_, &RAListofIdleModeUEs_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAofIdleModeUEs const TTCN_JSONdescriptor_t RAofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAofIdleModeUEs_oer_ext_arr_[0] = {}; const int RAofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAofIdleModeUEs_oer_ext_arr_, 0, RAofIdleModeUEs_oer_p_}; static Per_Integer_Constraint RAofIdleModeUEs_per_cons_(new INTEGER(1), new INTEGER(65536), FALSE); const ASN_PERdescriptor_t RAofIdleModeUEs_per_ = { &RAofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t RAofIdleModeUEs_descr_ = { "@RANAP-IEs.RAofIdleModeUEs", &SEQUENCE_ber_, NULL, NULL, NULL, &RAofIdleModeUEs_json_, &RAofIdleModeUEs_oer_, &RAofIdleModeUEs_per_, &RAofIdleModeUEs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for RAofIdleModeUEs_0 const int RAofIdleModeUEs_0_oer_ext_arr_[0] = {}; const int RAofIdleModeUEs_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAofIdleModeUEs_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RAofIdleModeUEs_0_oer_ext_arr_, 0, RAofIdleModeUEs_0_oer_p_}; const TTCN_Typedescriptor_t RAofIdleModeUEs_0_descr_ = { "@RANAP-IEs.RAofIdleModeUEs.", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RAofIdleModeUEs_0_oer_, &RAC_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAofIdleModeUEs_0_default_coding(""); UNIVERSAL_CHARSTRING RAofIdleModeUEs_default_coding(""); const ASN_Tag_t NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_ber_ = { 1u, NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_tag_ }; // No XER for NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs const int NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_ext_arr_[0] = {}; const int NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_ext_arr_, 0, NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_p_}; const TTCN_Typedescriptor_t NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_descr_ = { "@RANAP-IEs.NotEmptyRAListofIdleModeUEs.rAofIdleModeUEs", &NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_ber_, NULL, NULL, NULL, &RAofIdleModeUEs_json_, &NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_oer_, &RAofIdleModeUEs_per_, &RAofIdleModeUEs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NotEmptyRAListofIdleModeUEs_rAofIdleModeUEs_default_coding(""); // No XER for NotEmptyRAListofIdleModeUEs const TTCN_JSONdescriptor_t NotEmptyRAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int NotEmptyRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int NotEmptyRAListofIdleModeUEs_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t NotEmptyRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NotEmptyRAListofIdleModeUEs_oer_ext_arr_, 2, NotEmptyRAListofIdleModeUEs_oer_p_}; static const Per_Constraint NotEmptyRAListofIdleModeUEs_per_cons_; const ASN_PERdescriptor_t NotEmptyRAListofIdleModeUEs_per_ = { &NotEmptyRAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t NotEmptyRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.NotEmptyRAListofIdleModeUEs", &SEQUENCE_ber_, NULL, NULL, NULL, &NotEmptyRAListofIdleModeUEs_json_, &NotEmptyRAListofIdleModeUEs_oer_, &NotEmptyRAListofIdleModeUEs_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst72", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst72.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst72.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst72.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& NotEmptyRAListofIdleModeUEs__ExtIEs_1_criticality = const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_criticality; INTEGER const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_id; const INTEGER& NotEmptyRAListofIdleModeUEs__ExtIEs_1_id = const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& NotEmptyRAListofIdleModeUEs__ExtIEs_1_presence = const_NotEmptyRAListofIdleModeUEs__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst72.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst72", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst72.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst72_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_default_coding(""); const ASN_Tag_t NotEmptyRAListofIdleModeUEs_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t NotEmptyRAListofIdleModeUEs_iE__Extensions_ber_ = { 1u, NotEmptyRAListofIdleModeUEs_iE__Extensions_tag_ }; // No XER for NotEmptyRAListofIdleModeUEs_iE__Extensions const int NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_ext_arr_[0] = {}; const int NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_ext_arr_, 0, NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t NotEmptyRAListofIdleModeUEs_iE__Extensions_descr_ = { "@RANAP-IEs.NotEmptyRAListofIdleModeUEs.iE-Extensions", &NotEmptyRAListofIdleModeUEs_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_json_, &NotEmptyRAListofIdleModeUEs_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst72_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING NotEmptyRAListofIdleModeUEs_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING NotEmptyRAListofIdleModeUEs_default_coding(""); const ASN_Tag_t RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_ber_ = { 1u, RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_tag_ }; // No XER for RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs const int RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_ext_arr_, 2, RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_p_}; const TTCN_Typedescriptor_t RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.RAListofIdleModeUEs.notEmptyRAListofIdleModeUEs", &RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_ber_, NULL, NULL, NULL, &NotEmptyRAListofIdleModeUEs_json_, &RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_oer_, &NotEmptyRAListofIdleModeUEs_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAListofIdleModeUEs_notEmptyRAListofIdleModeUEs_default_coding(""); const ASN_Tag_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_ber_ = { 1u, RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_tag_ }; // No XER for RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs const TTCN_JSONdescriptor_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_ext_arr_[0] = {}; const int RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_ext_arr_, 0, RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_p_}; static const Per_Constraint RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_per_cons_; const ASN_PERdescriptor_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_per_ = { &RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_per_cons_ }; const TTCN_Typedescriptor_t RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_descr_ = { "@RANAP-IEs.RAListofIdleModeUEs.emptyFullRAListofIdleModeUEs", &RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_ber_, NULL, NULL, NULL, &RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_json_, &RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_oer_, &RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAListofIdleModeUEs_emptyFullRAListofIdleModeUEs_default_coding(""); UNIVERSAL_CHARSTRING RAListofIdleModeUEs_default_coding(""); // No XER for RAT__Type const TTCN_JSONdescriptor_t RAT__Type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RAT__Type_oer_ext_arr_[0] = {}; const int RAT__Type_oer_p_[0] = {}; const TTCN_OERdescriptor_t RAT__Type_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RAT__Type_oer_ext_arr_, 0, RAT__Type_oer_p_}; static const Per_Constraint RAT__Type_per_cons_; const ASN_PERdescriptor_t RAT__Type_per_ = { &RAT__Type_per_cons_ }; const TTCN_Typedescriptor_t RAT__Type_descr_ = { "@RANAP-IEs.RAT-Type", &ENUMERATED_ber_, NULL, NULL, NULL, &RAT__Type_json_, &RAT__Type_oer_, &RAT__Type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RAT__Type_default_coding(""); // No XER for RateControlAllowed const TTCN_JSONdescriptor_t RateControlAllowed_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RateControlAllowed_oer_ext_arr_[0] = {}; const int RateControlAllowed_oer_p_[0] = {}; const TTCN_OERdescriptor_t RateControlAllowed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RateControlAllowed_oer_ext_arr_, 0, RateControlAllowed_oer_p_}; static const Per_Constraint RateControlAllowed_per_cons_; const ASN_PERdescriptor_t RateControlAllowed_per_ = { &RateControlAllowed_per_cons_ }; const TTCN_Typedescriptor_t RateControlAllowed_descr_ = { "@RANAP-IEs.RateControlAllowed", &ENUMERATED_ber_, NULL, NULL, NULL, &RateControlAllowed_json_, &RateControlAllowed_oer_, &RateControlAllowed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RateControlAllowed_default_coding(""); const TTCN_Typedescriptor_t& RedirectAttemptFlag_descr_ = ASN_NULL_descr_; UNIVERSAL_CHARSTRING RedirectAttemptFlag_default_coding(""); // No XER for RedirectionCompleted const TTCN_JSONdescriptor_t RedirectionCompleted_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RedirectionCompleted_oer_ext_arr_[0] = {}; const int RedirectionCompleted_oer_p_[0] = {}; const TTCN_OERdescriptor_t RedirectionCompleted_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RedirectionCompleted_oer_ext_arr_, 0, RedirectionCompleted_oer_p_}; static const Per_Constraint RedirectionCompleted_per_cons_; const ASN_PERdescriptor_t RedirectionCompleted_per_ = { &RedirectionCompleted_per_cons_ }; const TTCN_Typedescriptor_t RedirectionCompleted_descr_ = { "@RANAP-IEs.RedirectionCompleted", &ENUMERATED_ber_, NULL, NULL, NULL, &RedirectionCompleted_json_, &RedirectionCompleted_oer_, &RedirectionCompleted_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RedirectionCompleted_default_coding(""); // No XER for RejectCauseValue const TTCN_JSONdescriptor_t RejectCauseValue_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RejectCauseValue_oer_ext_arr_[0] = {}; const int RejectCauseValue_oer_p_[0] = {}; const TTCN_OERdescriptor_t RejectCauseValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RejectCauseValue_oer_ext_arr_, 0, RejectCauseValue_oer_p_}; static const Per_Constraint RejectCauseValue_per_cons_; const ASN_PERdescriptor_t RejectCauseValue_per_ = { &RejectCauseValue_per_cons_ }; const TTCN_Typedescriptor_t RejectCauseValue_descr_ = { "@RANAP-IEs.RejectCauseValue", &ENUMERATED_ber_, NULL, NULL, NULL, &RejectCauseValue_json_, &RejectCauseValue_oer_, &RejectCauseValue_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RejectCauseValue_default_coding(""); // No XER for RelocationType const TTCN_JSONdescriptor_t RelocationType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RelocationType_oer_ext_arr_[0] = {}; const int RelocationType_oer_p_[0] = {}; const TTCN_OERdescriptor_t RelocationType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RelocationType_oer_ext_arr_, 0, RelocationType_oer_p_}; static const Per_Constraint RelocationType_per_cons_; const ASN_PERdescriptor_t RelocationType_per_ = { &RelocationType_per_cons_ }; const TTCN_Typedescriptor_t RelocationType_descr_ = { "@RANAP-IEs.RelocationType", &ENUMERATED_ber_, NULL, NULL, NULL, &RelocationType_json_, &RelocationType_oer_, &RelocationType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RelocationType_default_coding(""); // No XER for ReportArea const TTCN_JSONdescriptor_t ReportArea_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int ReportArea_oer_ext_arr_[0] = {}; const int ReportArea_oer_p_[0] = {}; const TTCN_OERdescriptor_t ReportArea_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReportArea_oer_ext_arr_, 0, ReportArea_oer_p_}; static const Per_Constraint ReportArea_per_cons_; const ASN_PERdescriptor_t ReportArea_per_ = { &ReportArea_per_cons_ }; const TTCN_Typedescriptor_t ReportArea_descr_ = { "@RANAP-IEs.ReportArea", &ENUMERATED_ber_, NULL, NULL, NULL, &ReportArea_json_, &ReportArea_oer_, &ReportArea_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING ReportArea_default_coding(""); // No XER for RequestedGANSSAssistanceData const int RequestedGANSSAssistanceData_oer_ext_arr_[0] = {}; const int RequestedGANSSAssistanceData_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestedGANSSAssistanceData_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestedGANSSAssistanceData_oer_ext_arr_, 0, RequestedGANSSAssistanceData_oer_p_}; static Per_Integer_Constraint RequestedGANSSAssistanceData_per_cons_(new INTEGER(1), new INTEGER(201), FALSE); const ASN_PERdescriptor_t RequestedGANSSAssistanceData_per_ = { &RequestedGANSSAssistanceData_per_cons_ }; const TTCN_Typedescriptor_t RequestedGANSSAssistanceData_descr_ = { "@RANAP-IEs.RequestedGANSSAssistanceData", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RequestedGANSSAssistanceData_oer_, &RequestedGANSSAssistanceData_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestedGANSSAssistanceData_default_coding(""); // No XER for Requested__RAB__Parameter__Values const TTCN_JSONdescriptor_t Requested__RAB__Parameter__Values_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Requested__RAB__Parameter__Values_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__Values_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__Values_oer_ = { -1, TRUE, -1, TRUE, 3, 0, Requested__RAB__Parameter__Values_oer_ext_arr_, 3, Requested__RAB__Parameter__Values_oer_p_}; static const Per_Constraint Requested__RAB__Parameter__Values_per_cons_; const ASN_PERdescriptor_t Requested__RAB__Parameter__Values_per_ = { &Requested__RAB__Parameter__Values_per_cons_ }; const TTCN_Typedescriptor_t Requested__RAB__Parameter__Values_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-Values", &SEQUENCE_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__Values_json_, &Requested__RAB__Parameter__Values_oer_, &Requested__RAB__Parameter__Values_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Requested__RAB__Parameter__MaxBitrateList const TTCN_JSONdescriptor_t Requested__RAB__Parameter__MaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Requested__RAB__Parameter__MaxBitrateList_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__MaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__MaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__MaxBitrateList_oer_ext_arr_, 0, Requested__RAB__Parameter__MaxBitrateList_oer_p_}; static Per_Integer_Constraint Requested__RAB__Parameter__MaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Requested__RAB__Parameter__MaxBitrateList_per_ = { &Requested__RAB__Parameter__MaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Requested__RAB__Parameter__MaxBitrateList_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-MaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__MaxBitrateList_json_, &Requested__RAB__Parameter__MaxBitrateList_oer_, &Requested__RAB__Parameter__MaxBitrateList_per_, &Requested__RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Requested__RAB__Parameter__MaxBitrateList_0 const int Requested__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__MaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__MaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Requested__RAB__Parameter__MaxBitrateList_0_oer_ext_arr_, 0, Requested__RAB__Parameter__MaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__MaxBitrateList_0_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-MaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Requested__RAB__Parameter__MaxBitrateList_0_oer_, &MaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__MaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Requested__RAB__Parameter__MaxBitrateList_default_coding(""); const ASN_Tag_t Requested__RAB__Parameter__Values_requestedMaxBitrates_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t Requested__RAB__Parameter__Values_requestedMaxBitrates_ber_ = { 1u, Requested__RAB__Parameter__Values_requestedMaxBitrates_tag_ }; // No XER for Requested__RAB__Parameter__Values_requestedMaxBitrates const int Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_ext_arr_, 0, Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__Values_requestedMaxBitrates_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-Values.requestedMaxBitrates", &Requested__RAB__Parameter__Values_requestedMaxBitrates_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__MaxBitrateList_json_, &Requested__RAB__Parameter__Values_requestedMaxBitrates_oer_, &Requested__RAB__Parameter__MaxBitrateList_per_, &Requested__RAB__Parameter__MaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__Values_requestedMaxBitrates_default_coding(""); // No XER for Requested__RAB__Parameter__GuaranteedBitrateList const TTCN_JSONdescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Requested__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__GuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__GuaranteedBitrateList_oer_ext_arr_, 0, Requested__RAB__Parameter__GuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Requested__RAB__Parameter__GuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_per_ = { &Requested__RAB__Parameter__GuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-GuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__GuaranteedBitrateList_json_, &Requested__RAB__Parameter__GuaranteedBitrateList_oer_, &Requested__RAB__Parameter__GuaranteedBitrateList_per_, &Requested__RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Requested__RAB__Parameter__GuaranteedBitrateList_0 const int Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_ext_arr_, 0, Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__GuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-GuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Requested__RAB__Parameter__GuaranteedBitrateList_0_oer_, &GuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__GuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Requested__RAB__Parameter__GuaranteedBitrateList_default_coding(""); const ASN_Tag_t Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_ber_ = { 1u, Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_tag_ }; // No XER for Requested__RAB__Parameter__Values_requestedGuaranteedBitrates const int Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_ext_arr_, 0, Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-Values.requestedGuaranteedBitrates", &Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__GuaranteedBitrateList_json_, &Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_oer_, &Requested__RAB__Parameter__GuaranteedBitrateList_per_, &Requested__RAB__Parameter__GuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__Values_requestedGuaranteedBitrates_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst73", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst73.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst73.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst73.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_Requested__RAB__Parameter__Values__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& Requested__RAB__Parameter__Values__ExtIEs_1_criticality = const_Requested__RAB__Parameter__Values__ExtIEs_1_criticality; INTEGER const_Requested__RAB__Parameter__Values__ExtIEs_1_id; const INTEGER& Requested__RAB__Parameter__Values__ExtIEs_1_id = const_Requested__RAB__Parameter__Values__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_Requested__RAB__Parameter__Values__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& Requested__RAB__Parameter__Values__ExtIEs_1_presence = const_Requested__RAB__Parameter__Values__ExtIEs_1_presence; // No XER for Requested__RAB__Parameter__ExtendedMaxBitrateList const TTCN_JSONdescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_ext_arr_, 0, Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_p_}; static Per_Integer_Constraint Requested__RAB__Parameter__ExtendedMaxBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_per_ = { &Requested__RAB__Parameter__ExtendedMaxBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-ExtendedMaxBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__ExtendedMaxBitrateList_json_, &Requested__RAB__Parameter__ExtendedMaxBitrateList_oer_, &Requested__RAB__Parameter__ExtendedMaxBitrateList_per_, &Requested__RAB__Parameter__ExtendedMaxBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Requested__RAB__Parameter__ExtendedMaxBitrateList_0 const int Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_ext_arr_, 0, Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__ExtendedMaxBitrateList_0_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-ExtendedMaxBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Requested__RAB__Parameter__ExtendedMaxBitrateList_0_oer_, &ExtendedMaxBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__ExtendedMaxBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Requested__RAB__Parameter__ExtendedMaxBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_Requested__RAB__Parameter__Values__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& Requested__RAB__Parameter__Values__ExtIEs_2_criticality = const_Requested__RAB__Parameter__Values__ExtIEs_2_criticality; INTEGER const_Requested__RAB__Parameter__Values__ExtIEs_2_id; const INTEGER& Requested__RAB__Parameter__Values__ExtIEs_2_id = const_Requested__RAB__Parameter__Values__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_Requested__RAB__Parameter__Values__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& Requested__RAB__Parameter__Values__ExtIEs_2_presence = const_Requested__RAB__Parameter__Values__ExtIEs_2_presence; // No XER for Requested__RAB__Parameter__ExtendedGuaranteedBitrateList const TTCN_JSONdescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_ext_arr_, 0, Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_p_}; static Per_Integer_Constraint Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_(new INTEGER(1), new INTEGER(2), FALSE); const ASN_PERdescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_per_ = { &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_per_cons_ }; const TTCN_Typedescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-ExtendedGuaranteedBitrateList", &SEQUENCE_ber_, NULL, NULL, NULL, &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_json_, &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_oer_, &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_per_, &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0 const int Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ = { 4, FALSE, -1, FALSE, 0, 0, Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_ext_arr_, 0, Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-ExtendedGuaranteedBitrateList.", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_oer_, &ExtendedGuaranteedBitrate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_0_default_coding(""); UNIVERSAL_CHARSTRING Requested__RAB__Parameter__ExtendedGuaranteedBitrateList_default_coding(""); RANAP__CommonDataTypes::Criticality const_Requested__RAB__Parameter__Values__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& Requested__RAB__Parameter__Values__ExtIEs_3_criticality = const_Requested__RAB__Parameter__Values__ExtIEs_3_criticality; INTEGER const_Requested__RAB__Parameter__Values__ExtIEs_3_id; const INTEGER& Requested__RAB__Parameter__Values__ExtIEs_3_id = const_Requested__RAB__Parameter__Values__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_Requested__RAB__Parameter__Values__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& Requested__RAB__Parameter__Values__ExtIEs_3_presence = const_Requested__RAB__Parameter__Values__ExtIEs_3_presence; RANAP__CommonDataTypes::Criticality const_Requested__RAB__Parameter__Values__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& Requested__RAB__Parameter__Values__ExtIEs_4_criticality = const_Requested__RAB__Parameter__Values__ExtIEs_4_criticality; INTEGER const_Requested__RAB__Parameter__Values__ExtIEs_4_id; const INTEGER& Requested__RAB__Parameter__Values__ExtIEs_4_id = const_Requested__RAB__Parameter__Values__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_Requested__RAB__Parameter__Values__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& Requested__RAB__Parameter__Values__ExtIEs_4_presence = const_Requested__RAB__Parameter__Values__ExtIEs_4_presence; RANAP__CommonDataTypes::Criticality const_Requested__RAB__Parameter__Values__ExtIEs_5_criticality; const RANAP__CommonDataTypes::Criticality& Requested__RAB__Parameter__Values__ExtIEs_5_criticality = const_Requested__RAB__Parameter__Values__ExtIEs_5_criticality; INTEGER const_Requested__RAB__Parameter__Values__ExtIEs_5_id; const INTEGER& Requested__RAB__Parameter__Values__ExtIEs_5_id = const_Requested__RAB__Parameter__Values__ExtIEs_5_id; RANAP__CommonDataTypes::Presence const_Requested__RAB__Parameter__Values__ExtIEs_5_presence; const RANAP__CommonDataTypes::Presence& Requested__RAB__Parameter__Values__ExtIEs_5_presence = const_Requested__RAB__Parameter__Values__ExtIEs_5_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst73.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst73", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst73.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst73_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_default_coding(""); const ASN_Tag_t Requested__RAB__Parameter__Values_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t Requested__RAB__Parameter__Values_iE__Extensions_ber_ = { 1u, Requested__RAB__Parameter__Values_iE__Extensions_tag_ }; // No XER for Requested__RAB__Parameter__Values_iE__Extensions const int Requested__RAB__Parameter__Values_iE__Extensions_oer_ext_arr_[0] = {}; const int Requested__RAB__Parameter__Values_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t Requested__RAB__Parameter__Values_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Requested__RAB__Parameter__Values_iE__Extensions_oer_ext_arr_, 0, Requested__RAB__Parameter__Values_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t Requested__RAB__Parameter__Values_iE__Extensions_descr_ = { "@RANAP-IEs.Requested-RAB-Parameter-Values.iE-Extensions", &Requested__RAB__Parameter__Values_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_json_, &Requested__RAB__Parameter__Values_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst73_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Requested__RAB__Parameter__Values_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING Requested__RAB__Parameter__Values_default_coding(""); const ASN_Tag_t RequestType_event_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RequestType_event_ber_ = { 1u, RequestType_event_tag_ }; // No XER for RequestType_event const int RequestType_event_oer_ext_arr_[0] = {}; const int RequestType_event_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestType_event_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestType_event_oer_ext_arr_, 0, RequestType_event_oer_p_}; const TTCN_Typedescriptor_t RequestType_event_descr_ = { "@RANAP-IEs.RequestType.event", &RequestType_event_ber_, NULL, NULL, NULL, &Event_json_, &RequestType_event_oer_, &Event_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestType_event_default_coding(""); const ASN_Tag_t RequestType_reportArea_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RequestType_reportArea_ber_ = { 1u, RequestType_reportArea_tag_ }; // No XER for RequestType_reportArea const int RequestType_reportArea_oer_ext_arr_[0] = {}; const int RequestType_reportArea_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestType_reportArea_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestType_reportArea_oer_ext_arr_, 0, RequestType_reportArea_oer_p_}; const TTCN_Typedescriptor_t RequestType_reportArea_descr_ = { "@RANAP-IEs.RequestType.reportArea", &RequestType_reportArea_ber_, NULL, NULL, NULL, &ReportArea_json_, &RequestType_reportArea_oer_, &ReportArea_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestType_reportArea_default_coding(""); // No XER for RequestType const TTCN_JSONdescriptor_t RequestType_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RequestType_oer_ext_arr_[0] = {}; const int RequestType_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RequestType_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RequestType_oer_ext_arr_, 3, RequestType_oer_p_}; static const Per_Constraint RequestType_per_cons_; const ASN_PERdescriptor_t RequestType_per_ = { &RequestType_per_cons_ }; const TTCN_Typedescriptor_t RequestType_descr_ = { "@RANAP-IEs.RequestType", &SEQUENCE_ber_, NULL, NULL, NULL, &RequestType_json_, &RequestType_oer_, &RequestType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RequestType_accuracyCode_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RequestType_accuracyCode_ber_ = { 1u, RequestType_accuracyCode_tag_ }; // No XER for RequestType_accuracyCode const int RequestType_accuracyCode_oer_ext_arr_[0] = {}; const int RequestType_accuracyCode_oer_p_[0] = {}; const TTCN_OERdescriptor_t RequestType_accuracyCode_oer_ = { 1, FALSE, -1, FALSE, 0, 0, RequestType_accuracyCode_oer_ext_arr_, 0, RequestType_accuracyCode_oer_p_}; static Per_Integer_Constraint RequestType_accuracyCode_per_cons_(new INTEGER(0), new INTEGER(127), FALSE); const ASN_PERdescriptor_t RequestType_accuracyCode_per_ = { &RequestType_accuracyCode_per_cons_ }; const TTCN_Typedescriptor_t RequestType_accuracyCode_descr_ = { "@RANAP-IEs.RequestType.accuracyCode", &RequestType_accuracyCode_ber_, NULL, NULL, NULL, &INTEGER_json_, &RequestType_accuracyCode_oer_, &RequestType_accuracyCode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RequestType_accuracyCode_default_coding(""); UNIVERSAL_CHARSTRING RequestType_default_coding(""); // No XER for RNSAPRelocationParameters const TTCN_JSONdescriptor_t RNSAPRelocationParameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RNSAPRelocationParameters_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_oer_ = { -1, TRUE, -1, TRUE, 5, 0, RNSAPRelocationParameters_oer_ext_arr_, 5, RNSAPRelocationParameters_oer_p_}; static const Per_Constraint RNSAPRelocationParameters_per_cons_; const ASN_PERdescriptor_t RNSAPRelocationParameters_per_ = { &RNSAPRelocationParameters_per_cons_ }; const TTCN_Typedescriptor_t RNSAPRelocationParameters_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters", &SEQUENCE_ber_, NULL, NULL, NULL, &RNSAPRelocationParameters_json_, &RNSAPRelocationParameters_oer_, &RNSAPRelocationParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RNSAPRelocationParameters_rabParmetersList_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RNSAPRelocationParameters_rabParmetersList_ber_ = { 1u, RNSAPRelocationParameters_rabParmetersList_tag_ }; // No XER for RNSAPRelocationParameters_rabParmetersList const int RNSAPRelocationParameters_rabParmetersList_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_rabParmetersList_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_rabParmetersList_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNSAPRelocationParameters_rabParmetersList_oer_ext_arr_, 0, RNSAPRelocationParameters_rabParmetersList_oer_p_}; const TTCN_Typedescriptor_t RNSAPRelocationParameters_rabParmetersList_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters.rabParmetersList", &RNSAPRelocationParameters_rabParmetersList_ber_, NULL, NULL, NULL, &RABParametersList_json_, &RNSAPRelocationParameters_rabParmetersList_oer_, &RABParametersList_per_, &RABParametersList_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNSAPRelocationParameters_rabParmetersList_default_coding(""); const ASN_Tag_t RNSAPRelocationParameters_locationReporting_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RNSAPRelocationParameters_locationReporting_ber_ = { 1u, RNSAPRelocationParameters_locationReporting_tag_ }; // No XER for RNSAPRelocationParameters_locationReporting const int RNSAPRelocationParameters_locationReporting_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_locationReporting_oer_p_[12] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_locationReporting_oer_ = { -1, TRUE, -1, TRUE, 12, 0, RNSAPRelocationParameters_locationReporting_oer_ext_arr_, 12, RNSAPRelocationParameters_locationReporting_oer_p_}; const TTCN_Typedescriptor_t RNSAPRelocationParameters_locationReporting_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters.locationReporting", &RNSAPRelocationParameters_locationReporting_ber_, NULL, NULL, NULL, &LocationReportingTransferInformation_json_, &RNSAPRelocationParameters_locationReporting_oer_, &LocationReportingTransferInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNSAPRelocationParameters_locationReporting_default_coding(""); const ASN_Tag_t TraceInformation_traceReference_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TraceInformation_traceReference_ber_ = { 1u, TraceInformation_traceReference_tag_ }; // No XER for TraceInformation_traceReference const int TraceInformation_traceReference_oer_ext_arr_[0] = {}; const int TraceInformation_traceReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceInformation_traceReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceInformation_traceReference_oer_ext_arr_, 0, TraceInformation_traceReference_oer_p_}; const TTCN_Typedescriptor_t TraceInformation_traceReference_descr_ = { "@RANAP-IEs.TraceInformation.traceReference", &TraceInformation_traceReference_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TraceInformation_traceReference_oer_, &TraceReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceInformation_traceReference_default_coding(""); // No XER for UE__ID const TTCN_JSONdescriptor_t UE__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__ID_oer_ext_arr_[0] = {}; const int UE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__ID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, UE__ID_oer_ext_arr_, 0, UE__ID_oer_p_}; static const Per_Constraint UE__ID_per_cons_; const ASN_PERdescriptor_t UE__ID_per_ = { &UE__ID_per_cons_ }; const TTCN_Typedescriptor_t UE__ID_descr_ = { "@RANAP-IEs.UE-ID", &CHOICE_ber_, NULL, NULL, NULL, &UE__ID_json_, &UE__ID_oer_, &UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t UE__ID_imsi_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__ID_imsi_ber_ = { 1u, UE__ID_imsi_tag_ }; // No XER for UE__ID_imsi const int UE__ID_imsi_oer_ext_arr_[0] = {}; const int UE__ID_imsi_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__ID_imsi_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__ID_imsi_oer_ext_arr_, 0, UE__ID_imsi_oer_p_}; const TTCN_Typedescriptor_t UE__ID_imsi_descr_ = { "@RANAP-IEs.UE-ID.imsi", &UE__ID_imsi_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__ID_imsi_oer_, &IMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__ID_imsi_default_coding(""); const ASN_Tag_t UE__ID_imei_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__ID_imei_ber_ = { 1u, UE__ID_imei_tag_ }; // No XER for UE__ID_imei const int UE__ID_imei_oer_ext_arr_[0] = {}; const int UE__ID_imei_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__ID_imei_oer_ = { -1, TRUE, 8, FALSE, 0, 0, UE__ID_imei_oer_ext_arr_, 0, UE__ID_imei_oer_p_}; const TTCN_Typedescriptor_t UE__ID_imei_descr_ = { "@RANAP-IEs.UE-ID.imei", &UE__ID_imei_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__ID_imei_oer_, &IMEI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__ID_imei_default_coding(""); const ASN_Tag_t UE__ID_imeisv_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UE__ID_imeisv_ber_ = { 1u, UE__ID_imeisv_tag_ }; // No XER for UE__ID_imeisv const int UE__ID_imeisv_oer_ext_arr_[0] = {}; const int UE__ID_imeisv_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__ID_imeisv_oer_ = { -1, TRUE, 8, FALSE, 0, 0, UE__ID_imeisv_oer_ext_arr_, 0, UE__ID_imeisv_oer_p_}; const TTCN_Typedescriptor_t UE__ID_imeisv_descr_ = { "@RANAP-IEs.UE-ID.imeisv", &UE__ID_imeisv_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__ID_imeisv_oer_, &IMEISV_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__ID_imeisv_default_coding(""); UNIVERSAL_CHARSTRING UE__ID_default_coding(""); const ASN_Tag_t TraceInformation_ue__identity_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TraceInformation_ue__identity_ber_ = { 1u, TraceInformation_ue__identity_tag_ }; // No XER for TraceInformation_ue__identity const int TraceInformation_ue__identity_oer_ext_arr_[0] = {}; const int TraceInformation_ue__identity_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceInformation_ue__identity_oer_ = { -1, TRUE, -1, TRUE, 2, 0, TraceInformation_ue__identity_oer_ext_arr_, 0, TraceInformation_ue__identity_oer_p_}; const TTCN_Typedescriptor_t TraceInformation_ue__identity_descr_ = { "@RANAP-IEs.TraceInformation.ue-identity", &TraceInformation_ue__identity_ber_, NULL, NULL, NULL, &UE__ID_json_, &TraceInformation_ue__identity_oer_, &UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceInformation_ue__identity_default_coding(""); // No XER for TraceInformation const TTCN_JSONdescriptor_t TraceInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TraceInformation_oer_ext_arr_[0] = {}; const int TraceInformation_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TraceInformation_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TraceInformation_oer_ext_arr_, 4, TraceInformation_oer_p_}; static const Per_Constraint TraceInformation_per_cons_; const ASN_PERdescriptor_t TraceInformation_per_ = { &TraceInformation_per_cons_ }; const TTCN_Typedescriptor_t TraceInformation_descr_ = { "@RANAP-IEs.TraceInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &TraceInformation_json_, &TraceInformation_oer_, &TraceInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TraceInformation_tracePropagationParameters_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TraceInformation_tracePropagationParameters_ber_ = { 1u, TraceInformation_tracePropagationParameters_tag_ }; // No XER for TraceInformation_tracePropagationParameters const int TraceInformation_tracePropagationParameters_oer_ext_arr_[0] = {}; const int TraceInformation_tracePropagationParameters_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TraceInformation_tracePropagationParameters_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TraceInformation_tracePropagationParameters_oer_ext_arr_, 4, TraceInformation_tracePropagationParameters_oer_p_}; const TTCN_Typedescriptor_t TraceInformation_tracePropagationParameters_descr_ = { "@RANAP-IEs.TraceInformation.tracePropagationParameters", &TraceInformation_tracePropagationParameters_ber_, NULL, NULL, NULL, &TracePropagationParameters_json_, &TraceInformation_tracePropagationParameters_oer_, &TracePropagationParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceInformation_tracePropagationParameters_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst74", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst74.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst74.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst74.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst74.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst74", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst74.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst74_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_default_coding(""); const ASN_Tag_t TraceInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t TraceInformation_iE__Extensions_ber_ = { 1u, TraceInformation_iE__Extensions_tag_ }; // No XER for TraceInformation_iE__Extensions const int TraceInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int TraceInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceInformation_iE__Extensions_oer_ext_arr_, 0, TraceInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TraceInformation_iE__Extensions_descr_ = { "@RANAP-IEs.TraceInformation.iE-Extensions", &TraceInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_json_, &TraceInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst74_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TraceInformation_default_coding(""); const ASN_Tag_t RNSAPRelocationParameters_traceInformation_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RNSAPRelocationParameters_traceInformation_ber_ = { 1u, RNSAPRelocationParameters_traceInformation_tag_ }; // No XER for RNSAPRelocationParameters_traceInformation const int RNSAPRelocationParameters_traceInformation_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_traceInformation_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_traceInformation_oer_ = { -1, TRUE, -1, TRUE, 4, 0, RNSAPRelocationParameters_traceInformation_oer_ext_arr_, 4, RNSAPRelocationParameters_traceInformation_oer_p_}; const TTCN_Typedescriptor_t RNSAPRelocationParameters_traceInformation_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters.traceInformation", &RNSAPRelocationParameters_traceInformation_ber_, NULL, NULL, NULL, &TraceInformation_json_, &RNSAPRelocationParameters_traceInformation_oer_, &TraceInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNSAPRelocationParameters_traceInformation_default_coding(""); const ASN_Tag_t RNSAPRelocationParameters_sourceSAI_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t RNSAPRelocationParameters_sourceSAI_ber_ = { 1u, RNSAPRelocationParameters_sourceSAI_tag_ }; // No XER for RNSAPRelocationParameters_sourceSAI const int RNSAPRelocationParameters_sourceSAI_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_sourceSAI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_sourceSAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNSAPRelocationParameters_sourceSAI_oer_ext_arr_, 4, RNSAPRelocationParameters_sourceSAI_oer_p_}; const TTCN_Typedescriptor_t RNSAPRelocationParameters_sourceSAI_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters.sourceSAI", &RNSAPRelocationParameters_sourceSAI_ber_, NULL, NULL, NULL, &SAI_json_, &RNSAPRelocationParameters_sourceSAI_oer_, &SAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNSAPRelocationParameters_sourceSAI_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst75", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst75.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst75.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst75.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst75.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst75", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst75.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst75_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_default_coding(""); const ASN_Tag_t RNSAPRelocationParameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t RNSAPRelocationParameters_iE__Extensions_ber_ = { 1u, RNSAPRelocationParameters_iE__Extensions_tag_ }; // No XER for RNSAPRelocationParameters_iE__Extensions const int RNSAPRelocationParameters_iE__Extensions_oer_ext_arr_[0] = {}; const int RNSAPRelocationParameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RNSAPRelocationParameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RNSAPRelocationParameters_iE__Extensions_oer_ext_arr_, 0, RNSAPRelocationParameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RNSAPRelocationParameters_iE__Extensions_descr_ = { "@RANAP-IEs.RNSAPRelocationParameters.iE-Extensions", &RNSAPRelocationParameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_json_, &RNSAPRelocationParameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst75_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RNSAPRelocationParameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RNSAPRelocationParameters_default_coding(""); const TTCN_Typedescriptor_t& RRC__Container_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING RRC__Container_default_coding(""); // No XER for RSRVCC__HO__Indication const TTCN_JSONdescriptor_t RSRVCC__HO__Indication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RSRVCC__HO__Indication_oer_ext_arr_[0] = {}; const int RSRVCC__HO__Indication_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRVCC__HO__Indication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRVCC__HO__Indication_oer_ext_arr_, 0, RSRVCC__HO__Indication_oer_p_}; static const Per_Constraint RSRVCC__HO__Indication_per_cons_; const ASN_PERdescriptor_t RSRVCC__HO__Indication_per_ = { &RSRVCC__HO__Indication_per_cons_ }; const TTCN_Typedescriptor_t RSRVCC__HO__Indication_descr_ = { "@RANAP-IEs.RSRVCC-HO-Indication", &ENUMERATED_ber_, NULL, NULL, NULL, &RSRVCC__HO__Indication_json_, &RSRVCC__HO__Indication_oer_, &RSRVCC__HO__Indication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRVCC__HO__Indication_default_coding(""); const ASN_Tag_t RSRVCC__Information_nonce_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RSRVCC__Information_nonce_ber_ = { 1u, RSRVCC__Information_nonce_tag_ }; // No XER for RSRVCC__Information_nonce const int RSRVCC__Information_nonce_oer_ext_arr_[0] = {}; const int RSRVCC__Information_nonce_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRVCC__Information_nonce_oer_ = { -1, TRUE, 128, FALSE, 0, 0, RSRVCC__Information_nonce_oer_ext_arr_, 0, RSRVCC__Information_nonce_oer_p_}; static Per_Integer_Constraint RSRVCC__Information_nonce_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(128), FALSE); static Per_BitString_Constraint RSRVCC__Information_nonce_per_cons_(FALSE, &RSRVCC__Information_nonce_size_per_cons_); const ASN_PERdescriptor_t RSRVCC__Information_nonce_per_ = { &RSRVCC__Information_nonce_per_cons_ }; const TTCN_Typedescriptor_t RSRVCC__Information_nonce_descr_ = { "@RANAP-IEs.RSRVCC-Information.nonce", &RSRVCC__Information_nonce_ber_, NULL, NULL, NULL, &BITSTRING_json_, &RSRVCC__Information_nonce_oer_, &RSRVCC__Information_nonce_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRVCC__Information_nonce_default_coding(""); const ASN_Tag_t RSRVCC__Information_iMSInformation_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RSRVCC__Information_iMSInformation_ber_ = { 1u, RSRVCC__Information_iMSInformation_tag_ }; // No XER for RSRVCC__Information_iMSInformation const int RSRVCC__Information_iMSInformation_oer_ext_arr_[0] = {}; const int RSRVCC__Information_iMSInformation_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRVCC__Information_iMSInformation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRVCC__Information_iMSInformation_oer_ext_arr_, 0, RSRVCC__Information_iMSInformation_oer_p_}; static Per_Integer_Constraint RSRVCC__Information_iMSInformation_per_cons_(new INTEGER(1), new INTEGER(32), FALSE); const ASN_PERdescriptor_t RSRVCC__Information_iMSInformation_per_ = { &RSRVCC__Information_iMSInformation_per_cons_ }; const TTCN_Typedescriptor_t RSRVCC__Information_iMSInformation_descr_ = { "@RANAP-IEs.RSRVCC-Information.iMSInformation", &RSRVCC__Information_iMSInformation_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &RSRVCC__Information_iMSInformation_oer_, &RSRVCC__Information_iMSInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRVCC__Information_iMSInformation_default_coding(""); // No XER for RSRVCC__Information const TTCN_JSONdescriptor_t RSRVCC__Information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RSRVCC__Information_oer_ext_arr_[0] = {}; const int RSRVCC__Information_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t RSRVCC__Information_oer_ = { -1, TRUE, -1, TRUE, 3, 0, RSRVCC__Information_oer_ext_arr_, 3, RSRVCC__Information_oer_p_}; static const Per_Constraint RSRVCC__Information_per_cons_; const ASN_PERdescriptor_t RSRVCC__Information_per_ = { &RSRVCC__Information_per_cons_ }; const TTCN_Typedescriptor_t RSRVCC__Information_descr_ = { "@RANAP-IEs.RSRVCC-Information", &SEQUENCE_ber_, NULL, NULL, NULL, &RSRVCC__Information_json_, &RSRVCC__Information_oer_, &RSRVCC__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst76", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst76.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst76.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst76.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst76.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst76", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst76.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst76_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_default_coding(""); const ASN_Tag_t RSRVCC__Information_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t RSRVCC__Information_iE__Extensions_ber_ = { 1u, RSRVCC__Information_iE__Extensions_tag_ }; // No XER for RSRVCC__Information_iE__Extensions const int RSRVCC__Information_iE__Extensions_oer_ext_arr_[0] = {}; const int RSRVCC__Information_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRVCC__Information_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRVCC__Information_iE__Extensions_oer_ext_arr_, 0, RSRVCC__Information_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t RSRVCC__Information_iE__Extensions_descr_ = { "@RANAP-IEs.RSRVCC-Information.iE-Extensions", &RSRVCC__Information_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_json_, &RSRVCC__Information_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst76_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRVCC__Information_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING RSRVCC__Information_default_coding(""); // No XER for RSRVCC__Operation__Possible const TTCN_JSONdescriptor_t RSRVCC__Operation__Possible_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RSRVCC__Operation__Possible_oer_ext_arr_[0] = {}; const int RSRVCC__Operation__Possible_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRVCC__Operation__Possible_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRVCC__Operation__Possible_oer_ext_arr_, 0, RSRVCC__Operation__Possible_oer_p_}; static const Per_Constraint RSRVCC__Operation__Possible_per_cons_; const ASN_PERdescriptor_t RSRVCC__Operation__Possible_per_ = { &RSRVCC__Operation__Possible_per_cons_ }; const TTCN_Typedescriptor_t RSRVCC__Operation__Possible_descr_ = { "@RANAP-IEs.RSRVCC-Operation-Possible", &ENUMERATED_ber_, NULL, NULL, NULL, &RSRVCC__Operation__Possible_json_, &RSRVCC__Operation__Possible_oer_, &RSRVCC__Operation__Possible_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRVCC__Operation__Possible_default_coding(""); // No XER for SAPI const TTCN_JSONdescriptor_t SAPI_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SAPI_oer_ext_arr_[0] = {}; const int SAPI_oer_p_[0] = {}; const TTCN_OERdescriptor_t SAPI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SAPI_oer_ext_arr_, 0, SAPI_oer_p_}; static const Per_Constraint SAPI_per_cons_; const ASN_PERdescriptor_t SAPI_per_ = { &SAPI_per_cons_ }; const TTCN_Typedescriptor_t SAPI_descr_ = { "@RANAP-IEs.SAPI", &ENUMERATED_ber_, NULL, NULL, NULL, &SAPI_json_, &SAPI_oer_, &SAPI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SAPI_default_coding(""); // No XER for SessionUpdateID const int SessionUpdateID_oer_ext_arr_[0] = {}; const int SessionUpdateID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SessionUpdateID_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SessionUpdateID_oer_ext_arr_, 0, SessionUpdateID_oer_p_}; static Per_Integer_Constraint SessionUpdateID_per_cons_(new INTEGER(0), new INTEGER(1048575), FALSE); const ASN_PERdescriptor_t SessionUpdateID_per_ = { &SessionUpdateID_per_cons_ }; const TTCN_Typedescriptor_t SessionUpdateID_descr_ = { "@RANAP-IEs.SessionUpdateID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SessionUpdateID_oer_, &SessionUpdateID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SessionUpdateID_default_coding(""); // No XER for Session__Re__establishment__Indicator const TTCN_JSONdescriptor_t Session__Re__establishment__Indicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Session__Re__establishment__Indicator_oer_ext_arr_[0] = {}; const int Session__Re__establishment__Indicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t Session__Re__establishment__Indicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Session__Re__establishment__Indicator_oer_ext_arr_, 0, Session__Re__establishment__Indicator_oer_p_}; static const Per_Constraint Session__Re__establishment__Indicator_per_cons_; const ASN_PERdescriptor_t Session__Re__establishment__Indicator_per_ = { &Session__Re__establishment__Indicator_per_cons_ }; const TTCN_Typedescriptor_t Session__Re__establishment__Indicator_descr_ = { "@RANAP-IEs.Session-Re-establishment-Indicator", &ENUMERATED_ber_, NULL, NULL, NULL, &Session__Re__establishment__Indicator_json_, &Session__Re__establishment__Indicator_oer_, &Session__Re__establishment__Indicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Session__Re__establishment__Indicator_default_coding(""); // No XER for SGSN__Group__Identity const TTCN_JSONdescriptor_t SGSN__Group__Identity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SGSN__Group__Identity_oer_ext_arr_[0] = {}; const int SGSN__Group__Identity_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Group__Identity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SGSN__Group__Identity_oer_ext_arr_, 0, SGSN__Group__Identity_oer_p_}; static const Per_Constraint SGSN__Group__Identity_per_cons_; const ASN_PERdescriptor_t SGSN__Group__Identity_per_ = { &SGSN__Group__Identity_per_cons_ }; const TTCN_Typedescriptor_t SGSN__Group__Identity_descr_ = { "@RANAP-IEs.SGSN-Group-Identity", &CHOICE_ber_, NULL, NULL, NULL, &SGSN__Group__Identity_json_, &SGSN__Group__Identity_oer_, &SGSN__Group__Identity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SGSN__Group__Identity_null__NRI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SGSN__Group__Identity_null__NRI_ber_ = { 1u, SGSN__Group__Identity_null__NRI_tag_ }; // No XER for SGSN__Group__Identity_null__NRI const int SGSN__Group__Identity_null__NRI_oer_ext_arr_[0] = {}; const int SGSN__Group__Identity_null__NRI_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Group__Identity_null__NRI_oer_ = { -1, TRUE, 10, FALSE, 0, 0, SGSN__Group__Identity_null__NRI_oer_ext_arr_, 0, SGSN__Group__Identity_null__NRI_oer_p_}; const TTCN_Typedescriptor_t SGSN__Group__Identity_null__NRI_descr_ = { "@RANAP-IEs.SGSN-Group-Identity.null-NRI", &SGSN__Group__Identity_null__NRI_ber_, NULL, NULL, NULL, &BITSTRING_json_, &SGSN__Group__Identity_null__NRI_oer_, &Null__NRI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Group__Identity_null__NRI_default_coding(""); // No XER for SGSN__Group__ID const int SGSN__Group__ID_oer_ext_arr_[0] = {}; const int SGSN__Group__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Group__ID_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SGSN__Group__ID_oer_ext_arr_, 0, SGSN__Group__ID_oer_p_}; static Per_Integer_Constraint SGSN__Group__ID_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(2), FALSE); const ASN_PERdescriptor_t SGSN__Group__ID_per_ = { &SGSN__Group__ID_per_cons_ }; const TTCN_Typedescriptor_t SGSN__Group__ID_descr_ = { "@RANAP-IEs.SGSN-Group-ID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SGSN__Group__ID_oer_, &SGSN__Group__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Group__ID_default_coding(""); const ASN_Tag_t SGSN__Group__Identity_sGSN__Group__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SGSN__Group__Identity_sGSN__Group__ID_ber_ = { 1u, SGSN__Group__Identity_sGSN__Group__ID_tag_ }; // No XER for SGSN__Group__Identity_sGSN__Group__ID const int SGSN__Group__Identity_sGSN__Group__ID_oer_ext_arr_[0] = {}; const int SGSN__Group__Identity_sGSN__Group__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SGSN__Group__Identity_sGSN__Group__ID_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SGSN__Group__Identity_sGSN__Group__ID_oer_ext_arr_, 0, SGSN__Group__Identity_sGSN__Group__ID_oer_p_}; const TTCN_Typedescriptor_t SGSN__Group__Identity_sGSN__Group__ID_descr_ = { "@RANAP-IEs.SGSN-Group-Identity.sGSN-Group-ID", &SGSN__Group__Identity_sGSN__Group__ID_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SGSN__Group__Identity_sGSN__Group__ID_oer_, &SGSN__Group__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SGSN__Group__Identity_sGSN__Group__ID_default_coding(""); UNIVERSAL_CHARSTRING SGSN__Group__Identity_default_coding(""); const ASN_Tag_t SNA__Access__Information_authorisedPLMNs_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SNA__Access__Information_authorisedPLMNs_ber_ = { 1u, SNA__Access__Information_authorisedPLMNs_tag_ }; // No XER for SNA__Access__Information_authorisedPLMNs const int SNA__Access__Information_authorisedPLMNs_oer_ext_arr_[0] = {}; const int SNA__Access__Information_authorisedPLMNs_oer_p_[0] = {}; const TTCN_OERdescriptor_t SNA__Access__Information_authorisedPLMNs_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SNA__Access__Information_authorisedPLMNs_oer_ext_arr_, 0, SNA__Access__Information_authorisedPLMNs_oer_p_}; const TTCN_Typedescriptor_t SNA__Access__Information_authorisedPLMNs_descr_ = { "@RANAP-IEs.SNA-Access-Information.authorisedPLMNs", &SNA__Access__Information_authorisedPLMNs_ber_, NULL, NULL, NULL, &AuthorisedPLMNs_json_, &SNA__Access__Information_authorisedPLMNs_oer_, &AuthorisedPLMNs_per_, &AuthorisedPLMNs_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SNA__Access__Information_authorisedPLMNs_default_coding(""); // No XER for SNA__Access__Information const TTCN_JSONdescriptor_t SNA__Access__Information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SNA__Access__Information_oer_ext_arr_[0] = {}; const int SNA__Access__Information_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t SNA__Access__Information_oer_ = { -1, TRUE, -1, TRUE, 2, 0, SNA__Access__Information_oer_ext_arr_, 2, SNA__Access__Information_oer_p_}; static const Per_Constraint SNA__Access__Information_per_cons_; const ASN_PERdescriptor_t SNA__Access__Information_per_ = { &SNA__Access__Information_per_cons_ }; const TTCN_Typedescriptor_t SNA__Access__Information_descr_ = { "@RANAP-IEs.SNA-Access-Information", &SEQUENCE_ber_, NULL, NULL, NULL, &SNA__Access__Information_json_, &SNA__Access__Information_oer_, &SNA__Access__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst77", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst77.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst77.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst77.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst77.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst77", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst77.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst77_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_default_coding(""); const ASN_Tag_t SNA__Access__Information_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SNA__Access__Information_iE__Extensions_ber_ = { 1u, SNA__Access__Information_iE__Extensions_tag_ }; // No XER for SNA__Access__Information_iE__Extensions const int SNA__Access__Information_iE__Extensions_oer_ext_arr_[0] = {}; const int SNA__Access__Information_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SNA__Access__Information_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SNA__Access__Information_iE__Extensions_oer_ext_arr_, 0, SNA__Access__Information_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SNA__Access__Information_iE__Extensions_descr_ = { "@RANAP-IEs.SNA-Access-Information.iE-Extensions", &SNA__Access__Information_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_json_, &SNA__Access__Information_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst77_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SNA__Access__Information_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SNA__Access__Information_default_coding(""); // No XER for Service__Handover const TTCN_JSONdescriptor_t Service__Handover_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int Service__Handover_oer_ext_arr_[0] = {}; const int Service__Handover_oer_p_[0] = {}; const TTCN_OERdescriptor_t Service__Handover_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Service__Handover_oer_ext_arr_, 0, Service__Handover_oer_p_}; static const Per_Constraint Service__Handover_per_cons_; const ASN_PERdescriptor_t Service__Handover_per_ = { &Service__Handover_per_cons_ }; const TTCN_Typedescriptor_t Service__Handover_descr_ = { "@RANAP-IEs.Service-Handover", &ENUMERATED_ber_, NULL, NULL, NULL, &Service__Handover_json_, &Service__Handover_oer_, &Service__Handover_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING Service__Handover_default_coding(""); const TTCN_Typedescriptor_t& Source__ToTarget__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING Source__ToTarget__TransparentContainer_default_coding(""); const TTCN_Typedescriptor_t& SourceeNodeB__ToTargeteNodeB__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING SourceeNodeB__ToTargeteNodeB__TransparentContainer_default_coding(""); const TTCN_Typedescriptor_t& SourceBSS__ToTargetBSS__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING SourceBSS__ToTargetBSS__TransparentContainer_default_coding(""); // No XER for SourceID const TTCN_JSONdescriptor_t SourceID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceID_oer_ext_arr_[0] = {}; const int SourceID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, SourceID_oer_ext_arr_, 0, SourceID_oer_p_}; static const Per_Constraint SourceID_per_cons_; const ASN_PERdescriptor_t SourceID_per_ = { &SourceID_per_cons_ }; const TTCN_Typedescriptor_t SourceID_descr_ = { "@RANAP-IEs.SourceID", &CHOICE_ber_, NULL, NULL, NULL, &SourceID_json_, &SourceID_oer_, &SourceID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SourceRNC__ID_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SourceRNC__ID_pLMNidentity_ber_ = { 1u, SourceRNC__ID_pLMNidentity_tag_ }; // No XER for SourceRNC__ID_pLMNidentity const int SourceRNC__ID_pLMNidentity_oer_ext_arr_[0] = {}; const int SourceRNC__ID_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ID_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, SourceRNC__ID_pLMNidentity_oer_ext_arr_, 0, SourceRNC__ID_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ID_pLMNidentity_descr_ = { "@RANAP-IEs.SourceRNC-ID.pLMNidentity", &SourceRNC__ID_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SourceRNC__ID_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ID_pLMNidentity_default_coding(""); const ASN_Tag_t SourceRNC__ID_rNC__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SourceRNC__ID_rNC__ID_ber_ = { 1u, SourceRNC__ID_rNC__ID_tag_ }; // No XER for SourceRNC__ID_rNC__ID const int SourceRNC__ID_rNC__ID_oer_ext_arr_[0] = {}; const int SourceRNC__ID_rNC__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ID_rNC__ID_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SourceRNC__ID_rNC__ID_oer_ext_arr_, 0, SourceRNC__ID_rNC__ID_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ID_rNC__ID_descr_ = { "@RANAP-IEs.SourceRNC-ID.rNC-ID", &SourceRNC__ID_rNC__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ID_rNC__ID_oer_, &RNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ID_rNC__ID_default_coding(""); // No XER for SourceRNC__ID const TTCN_JSONdescriptor_t SourceRNC__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceRNC__ID_oer_ext_arr_[0] = {}; const int SourceRNC__ID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SourceRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ID_oer_ext_arr_, 3, SourceRNC__ID_oer_p_}; static const Per_Constraint SourceRNC__ID_per_cons_; const ASN_PERdescriptor_t SourceRNC__ID_per_ = { &SourceRNC__ID_per_cons_ }; const TTCN_Typedescriptor_t SourceRNC__ID_descr_ = { "@RANAP-IEs.SourceRNC-ID", &SEQUENCE_ber_, NULL, NULL, NULL, &SourceRNC__ID_json_, &SourceRNC__ID_oer_, &SourceRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst78", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst78.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst78.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst78.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SourceRNC__ID__ExtIEs_1_Extension const int SourceRNC__ID__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ID__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ID__ExtIEs_1_Extension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SourceRNC__ID__ExtIEs_1_Extension_oer_ext_arr_, 0, SourceRNC__ID__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ID__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ID-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ID__ExtIEs_1_Extension_oer_, &ExtendedRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ID__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ID__ExtIEs_1_criticality = const_SourceRNC__ID__ExtIEs_1_criticality; INTEGER const_SourceRNC__ID__ExtIEs_1_id; const INTEGER& SourceRNC__ID__ExtIEs_1_id = const_SourceRNC__ID__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ID__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ID__ExtIEs_1_presence = const_SourceRNC__ID__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst78.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst78", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst78.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst78_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_default_coding(""); const ASN_Tag_t SourceRNC__ID_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SourceRNC__ID_iE__Extensions_ber_ = { 1u, SourceRNC__ID_iE__Extensions_tag_ }; // No XER for SourceRNC__ID_iE__Extensions const int SourceRNC__ID_iE__Extensions_oer_ext_arr_[0] = {}; const int SourceRNC__ID_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ID_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ID_iE__Extensions_oer_ext_arr_, 0, SourceRNC__ID_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ID_iE__Extensions_descr_ = { "@RANAP-IEs.SourceRNC-ID.iE-Extensions", &SourceRNC__ID_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_json_, &SourceRNC__ID_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst78_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ID_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SourceRNC__ID_default_coding(""); const ASN_Tag_t SourceID_sourceRNC__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SourceID_sourceRNC__ID_ber_ = { 1u, SourceID_sourceRNC__ID_tag_ }; // No XER for SourceID_sourceRNC__ID const int SourceID_sourceRNC__ID_oer_ext_arr_[0] = {}; const int SourceID_sourceRNC__ID_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SourceID_sourceRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceID_sourceRNC__ID_oer_ext_arr_, 3, SourceID_sourceRNC__ID_oer_p_}; const TTCN_Typedescriptor_t SourceID_sourceRNC__ID_descr_ = { "@RANAP-IEs.SourceID.sourceRNC-ID", &SourceID_sourceRNC__ID_ber_, NULL, NULL, NULL, &SourceRNC__ID_json_, &SourceID_sourceRNC__ID_oer_, &SourceRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceID_sourceRNC__ID_default_coding(""); const ASN_Tag_t SourceID_sAI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SourceID_sAI_ber_ = { 1u, SourceID_sAI_tag_ }; // No XER for SourceID_sAI const int SourceID_sAI_oer_ext_arr_[0] = {}; const int SourceID_sAI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SourceID_sAI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceID_sAI_oer_ext_arr_, 4, SourceID_sAI_oer_p_}; const TTCN_Typedescriptor_t SourceID_sAI_descr_ = { "@RANAP-IEs.SourceID.sAI", &SourceID_sAI_ber_, NULL, NULL, NULL, &SAI_json_, &SourceID_sAI_oer_, &SAI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceID_sAI_default_coding(""); UNIVERSAL_CHARSTRING SourceID_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container const int SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.rRC-Container", &SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_oer_, &OCTETSTRING_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_rRC__Container_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances const int SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.numberOfIuInstances", &SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_oer_, &NumberOfIuInstances_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_numberOfIuInstances_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_relocationType_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_relocationType_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_relocationType_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_relocationType const int SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_relocationType_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.relocationType", &SourceRNC__ToTargetRNC__TransparentContainer_relocationType_ber_, NULL, NULL, NULL, &RelocationType_json_, &SourceRNC__ToTargetRNC__TransparentContainer_relocationType_oer_, &RelocationType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_relocationType_default_coding(""); // No XER for SourceRNC__ToTargetRNC__TransparentContainer const TTCN_JSONdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SourceRNC__ToTargetRNC__TransparentContainer_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_oer_p_[13] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_oer_ = { -1, TRUE, -1, TRUE, 13, 0, SourceRNC__ToTargetRNC__TransparentContainer_oer_ext_arr_, 13, SourceRNC__ToTargetRNC__TransparentContainer_oer_p_}; static const Per_Constraint SourceRNC__ToTargetRNC__TransparentContainer_per_cons_; const ASN_PERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_per_ = { &SourceRNC__ToTargetRNC__TransparentContainer_per_cons_ }; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer", &SEQUENCE_ber_, NULL, NULL, NULL, &SourceRNC__ToTargetRNC__TransparentContainer_json_, &SourceRNC__ToTargetRNC__TransparentContainer_oer_, &SourceRNC__ToTargetRNC__TransparentContainer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm const int SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.chosenIntegrityProtectionAlgorithm", &SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_oer_, &IntegrityProtectionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_chosenIntegrityProtectionAlgorithm_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey const int SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_ = { -1, TRUE, 128, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.integrityProtectionKey", &SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_ber_, NULL, NULL, NULL, &BITSTRING_json_, &SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_oer_, &IntegrityProtectionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_integrityProtectionKey_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_tag_[] = { { ASN_TAG_CONT, 5u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.chosenEncryptionAlgorithForSignalling", &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForSignalling_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_tag_[] = { { ASN_TAG_CONT, 6u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey const int SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_ = { -1, TRUE, 128, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.cipheringKey", &SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_ber_, NULL, NULL, NULL, &BITSTRING_json_, &SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_oer_, &EncryptionKey_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_cipheringKey_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_tag_[] = { { ASN_TAG_CONT, 7u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.chosenEncryptionAlgorithForCS", &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForCS_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_tag_[] = { { ASN_TAG_CONT, 8u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.chosenEncryptionAlgorithForPS", &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_oer_, &EncryptionAlgorithm_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_chosenEncryptionAlgorithForPS_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_tag_[] = { { ASN_TAG_CONT, 9u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI const int SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.d-RNTI", &SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_oer_, &D__RNTI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_d__RNTI_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_tag_[] = { { ASN_TAG_CONT, 10u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_targetCellId const int SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.targetCellId", &SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_oer_, &TargetCellId_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_targetCellId_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_tag_[] = { { ASN_TAG_CONT, 11u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping const int SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.rAB-TrCH-Mapping", &SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_ber_, NULL, NULL, NULL, &RAB__TrCH__Mapping_json_, &SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_oer_, &RAB__TrCH__Mapping_per_, &RAB__TrCH__Mapping_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_rAB__TrCH__Mapping_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst79", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst85.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst85.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst85.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SRB__TrCH__Mapping const TTCN_JSONdescriptor_t SRB__TrCH__Mapping_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SRB__TrCH__Mapping_oer_ext_arr_[0] = {}; const int SRB__TrCH__Mapping_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRB__TrCH__Mapping_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRB__TrCH__Mapping_oer_ext_arr_, 0, SRB__TrCH__Mapping_oer_p_}; static Per_Integer_Constraint SRB__TrCH__Mapping_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t SRB__TrCH__Mapping_per_ = { &SRB__TrCH__Mapping_per_cons_ }; const TTCN_Typedescriptor_t SRB__TrCH__Mapping_descr_ = { "@RANAP-IEs.SRB-TrCH-Mapping", &SEQUENCE_ber_, NULL, NULL, NULL, &SRB__TrCH__Mapping_json_, &SRB__TrCH__Mapping_oer_, &SRB__TrCH__Mapping_per_, &SRB__TrCH__Mapping_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; // No XER for SRB__ID const int SRB__ID_oer_ext_arr_[0] = {}; const int SRB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRB__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SRB__ID_oer_ext_arr_, 0, SRB__ID_oer_p_}; static Per_Integer_Constraint SRB__ID_per_cons_(new INTEGER(1), new INTEGER(32), FALSE); const ASN_PERdescriptor_t SRB__ID_per_ = { &SRB__ID_per_cons_ }; const TTCN_Typedescriptor_t SRB__ID_descr_ = { "@RANAP-IEs.SRB-ID", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SRB__ID_oer_, &SRB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRB__ID_default_coding(""); const ASN_Tag_t SRB__TrCH__MappingItem_sRB__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SRB__TrCH__MappingItem_sRB__ID_ber_ = { 1u, SRB__TrCH__MappingItem_sRB__ID_tag_ }; // No XER for SRB__TrCH__MappingItem_sRB__ID const int SRB__TrCH__MappingItem_sRB__ID_oer_ext_arr_[0] = {}; const int SRB__TrCH__MappingItem_sRB__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRB__TrCH__MappingItem_sRB__ID_oer_ = { 1, FALSE, -1, FALSE, 0, 0, SRB__TrCH__MappingItem_sRB__ID_oer_ext_arr_, 0, SRB__TrCH__MappingItem_sRB__ID_oer_p_}; const TTCN_Typedescriptor_t SRB__TrCH__MappingItem_sRB__ID_descr_ = { "@RANAP-IEs.SRB-TrCH-MappingItem.sRB-ID", &SRB__TrCH__MappingItem_sRB__ID_ber_, NULL, NULL, NULL, &INTEGER_json_, &SRB__TrCH__MappingItem_sRB__ID_oer_, &SRB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRB__TrCH__MappingItem_sRB__ID_default_coding(""); const ASN_Tag_t SRB__TrCH__MappingItem_trCH__ID_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SRB__TrCH__MappingItem_trCH__ID_ber_ = { 1u, SRB__TrCH__MappingItem_trCH__ID_tag_ }; // No XER for SRB__TrCH__MappingItem_trCH__ID const int SRB__TrCH__MappingItem_trCH__ID_oer_ext_arr_[0] = {}; const int SRB__TrCH__MappingItem_trCH__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SRB__TrCH__MappingItem_trCH__ID_oer_ = { -1, TRUE, -1, TRUE, 4, 0, SRB__TrCH__MappingItem_trCH__ID_oer_ext_arr_, 4, SRB__TrCH__MappingItem_trCH__ID_oer_p_}; const TTCN_Typedescriptor_t SRB__TrCH__MappingItem_trCH__ID_descr_ = { "@RANAP-IEs.SRB-TrCH-MappingItem.trCH-ID", &SRB__TrCH__MappingItem_trCH__ID_ber_, NULL, NULL, NULL, &TrCH__ID_json_, &SRB__TrCH__MappingItem_trCH__ID_oer_, &TrCH__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRB__TrCH__MappingItem_trCH__ID_default_coding(""); // No XER for SRB__TrCH__MappingItem const TTCN_JSONdescriptor_t SRB__TrCH__MappingItem_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SRB__TrCH__MappingItem_oer_ext_arr_[0] = {}; const int SRB__TrCH__MappingItem_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SRB__TrCH__MappingItem_oer_ = { -1, TRUE, -1, TRUE, 3, 0, SRB__TrCH__MappingItem_oer_ext_arr_, 3, SRB__TrCH__MappingItem_oer_p_}; static const Per_Constraint SRB__TrCH__MappingItem_per_cons_; const ASN_PERdescriptor_t SRB__TrCH__MappingItem_per_ = { &SRB__TrCH__MappingItem_per_cons_ }; const TTCN_Typedescriptor_t SRB__TrCH__MappingItem_descr_ = { "@RANAP-IEs.SRB-TrCH-MappingItem", &SEQUENCE_ber_, NULL, NULL, NULL, &SRB__TrCH__MappingItem_json_, &SRB__TrCH__MappingItem_oer_, &SRB__TrCH__MappingItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst80", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst79.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst79.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst79.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst79.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst79", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst80.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst79_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_default_coding(""); const ASN_Tag_t SRB__TrCH__MappingItem_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t SRB__TrCH__MappingItem_iE__Extensions_ber_ = { 1u, SRB__TrCH__MappingItem_iE__Extensions_tag_ }; // No XER for SRB__TrCH__MappingItem_iE__Extensions const int SRB__TrCH__MappingItem_iE__Extensions_oer_ext_arr_[0] = {}; const int SRB__TrCH__MappingItem_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRB__TrCH__MappingItem_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRB__TrCH__MappingItem_iE__Extensions_oer_ext_arr_, 0, SRB__TrCH__MappingItem_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SRB__TrCH__MappingItem_iE__Extensions_descr_ = { "@RANAP-IEs.SRB-TrCH-MappingItem.iE-Extensions", &SRB__TrCH__MappingItem_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_json_, &SRB__TrCH__MappingItem_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst80_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRB__TrCH__MappingItem_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SRB__TrCH__MappingItem_default_coding(""); // No XER for SRB__TrCH__Mapping_0 const int SRB__TrCH__Mapping_0_oer_ext_arr_[0] = {}; const int SRB__TrCH__Mapping_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SRB__TrCH__Mapping_0_oer_ = { -1, TRUE, -1, TRUE, 3, 0, SRB__TrCH__Mapping_0_oer_ext_arr_, 3, SRB__TrCH__Mapping_0_oer_p_}; const TTCN_Typedescriptor_t SRB__TrCH__Mapping_0_descr_ = { "@RANAP-IEs.SRB-TrCH-Mapping.", &SEQUENCE_ber_, NULL, NULL, NULL, &SRB__TrCH__MappingItem_json_, &SRB__TrCH__Mapping_0_oer_, &SRB__TrCH__MappingItem_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRB__TrCH__Mapping_0_default_coding(""); UNIVERSAL_CHARSTRING SRB__TrCH__Mapping_default_coding(""); RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_1_presence; // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_ = { -1, TRUE, -1, TRUE, 4, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_ext_arr_, 4, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.2.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &CellLoadInformationGroup_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_Extension_oer_, &CellLoadInformationGroup_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_2_presence; const ASN_Tag_t TraceRecordingSessionInformation_traceReference_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TraceRecordingSessionInformation_traceReference_ber_ = { 1u, TraceRecordingSessionInformation_traceReference_tag_ }; // No XER for TraceRecordingSessionInformation_traceReference const int TraceRecordingSessionInformation_traceReference_oer_ext_arr_[0] = {}; const int TraceRecordingSessionInformation_traceReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRecordingSessionInformation_traceReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceRecordingSessionInformation_traceReference_oer_ext_arr_, 0, TraceRecordingSessionInformation_traceReference_oer_p_}; const TTCN_Typedescriptor_t TraceRecordingSessionInformation_traceReference_descr_ = { "@RANAP-IEs.TraceRecordingSessionInformation.traceReference", &TraceRecordingSessionInformation_traceReference_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TraceRecordingSessionInformation_traceReference_oer_, &TraceReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRecordingSessionInformation_traceReference_default_coding(""); const ASN_Tag_t TraceRecordingSessionInformation_traceRecordingSessionReference_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TraceRecordingSessionInformation_traceRecordingSessionReference_ber_ = { 1u, TraceRecordingSessionInformation_traceRecordingSessionReference_tag_ }; // No XER for TraceRecordingSessionInformation_traceRecordingSessionReference const int TraceRecordingSessionInformation_traceRecordingSessionReference_oer_ext_arr_[0] = {}; const int TraceRecordingSessionInformation_traceRecordingSessionReference_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRecordingSessionInformation_traceRecordingSessionReference_oer_ = { 2, FALSE, -1, FALSE, 0, 0, TraceRecordingSessionInformation_traceRecordingSessionReference_oer_ext_arr_, 0, TraceRecordingSessionInformation_traceRecordingSessionReference_oer_p_}; const TTCN_Typedescriptor_t TraceRecordingSessionInformation_traceRecordingSessionReference_descr_ = { "@RANAP-IEs.TraceRecordingSessionInformation.traceRecordingSessionReference", &TraceRecordingSessionInformation_traceRecordingSessionReference_ber_, NULL, NULL, NULL, &INTEGER_json_, &TraceRecordingSessionInformation_traceRecordingSessionReference_oer_, &TraceRecordingSessionReference_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRecordingSessionInformation_traceRecordingSessionReference_default_coding(""); // No XER for TraceRecordingSessionInformation const TTCN_JSONdescriptor_t TraceRecordingSessionInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TraceRecordingSessionInformation_oer_ext_arr_[0] = {}; const int TraceRecordingSessionInformation_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TraceRecordingSessionInformation_oer_ = { -1, TRUE, -1, TRUE, 3, 0, TraceRecordingSessionInformation_oer_ext_arr_, 3, TraceRecordingSessionInformation_oer_p_}; static const Per_Constraint TraceRecordingSessionInformation_per_cons_; const ASN_PERdescriptor_t TraceRecordingSessionInformation_per_ = { &TraceRecordingSessionInformation_per_cons_ }; const TTCN_Typedescriptor_t TraceRecordingSessionInformation_descr_ = { "@RANAP-IEs.TraceRecordingSessionInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &TraceRecordingSessionInformation_json_, &TraceRecordingSessionInformation_oer_, &TraceRecordingSessionInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst81", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst80.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst80.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst80.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst80.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst80", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst81.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst80_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_default_coding(""); const ASN_Tag_t TraceRecordingSessionInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TraceRecordingSessionInformation_iE__Extensions_ber_ = { 1u, TraceRecordingSessionInformation_iE__Extensions_tag_ }; // No XER for TraceRecordingSessionInformation_iE__Extensions const int TraceRecordingSessionInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int TraceRecordingSessionInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceRecordingSessionInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TraceRecordingSessionInformation_iE__Extensions_oer_ext_arr_, 0, TraceRecordingSessionInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TraceRecordingSessionInformation_iE__Extensions_descr_ = { "@RANAP-IEs.TraceRecordingSessionInformation.iE-Extensions", &TraceRecordingSessionInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_json_, &TraceRecordingSessionInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst81_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceRecordingSessionInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TraceRecordingSessionInformation_default_coding(""); // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_ = { -1, TRUE, -1, TRUE, 3, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_ext_arr_, 3, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.3.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &TraceRecordingSessionInformation_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_Extension_oer_, &TraceRecordingSessionInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_3_presence; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_4_presence; // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_ = { 4, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.5.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_Extension_oer_, &D__RNTI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_5_presence; const TTCN_Typedescriptor_t& UE__History__Information_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING UE__History__Information_default_coding(""); RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_6_presence; // No XER for SubscriberProfileIDforRFP const int SubscriberProfileIDforRFP_oer_ext_arr_[0] = {}; const int SubscriberProfileIDforRFP_oer_p_[0] = {}; const TTCN_OERdescriptor_t SubscriberProfileIDforRFP_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SubscriberProfileIDforRFP_oer_ext_arr_, 0, SubscriberProfileIDforRFP_oer_p_}; static Per_Integer_Constraint SubscriberProfileIDforRFP_per_cons_(new INTEGER(1), new INTEGER(256), FALSE); const ASN_PERdescriptor_t SubscriberProfileIDforRFP_per_ = { &SubscriberProfileIDforRFP_per_cons_ }; const TTCN_Typedescriptor_t SubscriberProfileIDforRFP_descr_ = { "@RANAP-IEs.SubscriberProfileIDforRFP", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SubscriberProfileIDforRFP_oer_, &SubscriberProfileIDforRFP_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SubscriberProfileIDforRFP_default_coding(""); // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_ = { 2, FALSE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.7.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_Extension_oer_, &SubscriberProfileIDforRFP_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_7_presence; const ASN_Tag_t SRVCC__Information_nonce_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t SRVCC__Information_nonce_ber_ = { 1u, SRVCC__Information_nonce_tag_ }; // No XER for SRVCC__Information_nonce const int SRVCC__Information_nonce_oer_ext_arr_[0] = {}; const int SRVCC__Information_nonce_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__Information_nonce_oer_ = { -1, TRUE, 128, FALSE, 0, 0, SRVCC__Information_nonce_oer_ext_arr_, 0, SRVCC__Information_nonce_oer_p_}; static Per_Integer_Constraint SRVCC__Information_nonce_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(128), FALSE); static Per_BitString_Constraint SRVCC__Information_nonce_per_cons_(FALSE, &SRVCC__Information_nonce_size_per_cons_); const ASN_PERdescriptor_t SRVCC__Information_nonce_per_ = { &SRVCC__Information_nonce_per_cons_ }; const TTCN_Typedescriptor_t SRVCC__Information_nonce_descr_ = { "@RANAP-IEs.SRVCC-Information.nonce", &SRVCC__Information_nonce_ber_, NULL, NULL, NULL, &BITSTRING_json_, &SRVCC__Information_nonce_oer_, &SRVCC__Information_nonce_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Information_nonce_default_coding(""); // No XER for SRVCC__Information const TTCN_JSONdescriptor_t SRVCC__Information_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SRVCC__Information_oer_ext_arr_[0] = {}; const int SRVCC__Information_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t SRVCC__Information_oer_ = { -1, TRUE, -1, TRUE, 2, 0, SRVCC__Information_oer_ext_arr_, 2, SRVCC__Information_oer_p_}; static const Per_Constraint SRVCC__Information_per_cons_; const ASN_PERdescriptor_t SRVCC__Information_per_ = { &SRVCC__Information_per_cons_ }; const TTCN_Typedescriptor_t SRVCC__Information_descr_ = { "@RANAP-IEs.SRVCC-Information", &SEQUENCE_ber_, NULL, NULL, NULL, &SRVCC__Information_json_, &SRVCC__Information_oer_, &SRVCC__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst82", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst81.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst81.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst81.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst81.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst81", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst82.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst81_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_default_coding(""); const ASN_Tag_t SRVCC__Information_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t SRVCC__Information_iE__Extensions_ber_ = { 1u, SRVCC__Information_iE__Extensions_tag_ }; // No XER for SRVCC__Information_iE__Extensions const int SRVCC__Information_iE__Extensions_oer_ext_arr_[0] = {}; const int SRVCC__Information_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__Information_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__Information_iE__Extensions_oer_ext_arr_, 0, SRVCC__Information_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SRVCC__Information_iE__Extensions_descr_ = { "@RANAP-IEs.SRVCC-Information.iE-Extensions", &SRVCC__Information_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_json_, &SRVCC__Information_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst82_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Information_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SRVCC__Information_default_coding(""); // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_ = { -1, TRUE, -1, TRUE, 2, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_ext_arr_, 2, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.8.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &SRVCC__Information_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_Extension_oer_, &SRVCC__Information_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_8_presence; // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_ = { -1, TRUE, 8, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.9.&Extension", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_Extension_oer_, &RAB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_9_presence; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_10_presence; const ASN_Tag_t IRATmeasurementParameters_measurementDuration_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IRATmeasurementParameters_measurementDuration_ber_ = { 1u, IRATmeasurementParameters_measurementDuration_tag_ }; // No XER for IRATmeasurementParameters_measurementDuration const int IRATmeasurementParameters_measurementDuration_oer_ext_arr_[0] = {}; const int IRATmeasurementParameters_measurementDuration_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRATmeasurementParameters_measurementDuration_oer_ = { 1, FALSE, -1, FALSE, 0, 0, IRATmeasurementParameters_measurementDuration_oer_ext_arr_, 0, IRATmeasurementParameters_measurementDuration_oer_p_}; static Per_Integer_Constraint IRATmeasurementParameters_measurementDuration_per_cons_(new INTEGER(1), new INTEGER(100), FALSE); const ASN_PERdescriptor_t IRATmeasurementParameters_measurementDuration_per_ = { &IRATmeasurementParameters_measurementDuration_per_cons_ }; const TTCN_Typedescriptor_t IRATmeasurementParameters_measurementDuration_descr_ = { "@RANAP-IEs.IRATmeasurementParameters.measurementDuration", &IRATmeasurementParameters_measurementDuration_ber_, NULL, NULL, NULL, &INTEGER_json_, &IRATmeasurementParameters_measurementDuration_oer_, &IRATmeasurementParameters_measurementDuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRATmeasurementParameters_measurementDuration_default_coding(""); // No XER for IRATmeasurementParameters const TTCN_JSONdescriptor_t IRATmeasurementParameters_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IRATmeasurementParameters_oer_ext_arr_[0] = {}; const int IRATmeasurementParameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t IRATmeasurementParameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRATmeasurementParameters_oer_ext_arr_, 3, IRATmeasurementParameters_oer_p_}; static const Per_Constraint IRATmeasurementParameters_per_cons_; const ASN_PERdescriptor_t IRATmeasurementParameters_per_ = { &IRATmeasurementParameters_per_cons_ }; const TTCN_Typedescriptor_t IRATmeasurementParameters_descr_ = { "@RANAP-IEs.IRATmeasurementParameters", &SEQUENCE_ber_, NULL, NULL, NULL, &IRATmeasurementParameters_json_, &IRATmeasurementParameters_oer_, &IRATmeasurementParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for EUTRANFrequencies const TTCN_JSONdescriptor_t EUTRANFrequencies_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int EUTRANFrequencies_oer_ext_arr_[0] = {}; const int EUTRANFrequencies_oer_p_[0] = {}; const TTCN_OERdescriptor_t EUTRANFrequencies_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EUTRANFrequencies_oer_ext_arr_, 0, EUTRANFrequencies_oer_p_}; static Per_Integer_Constraint EUTRANFrequencies_per_cons_(new INTEGER(1), new INTEGER(8), FALSE); const ASN_PERdescriptor_t EUTRANFrequencies_per_ = { &EUTRANFrequencies_per_cons_ }; const TTCN_Typedescriptor_t EUTRANFrequencies_descr_ = { "@RANAP-IEs.EUTRANFrequencies", &SEQUENCE_ber_, NULL, NULL, NULL, &EUTRANFrequencies_json_, &EUTRANFrequencies_oer_, &EUTRANFrequencies_per_, &EUTRANFrequencies_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t EUTRANFrequencies_0_earfcn_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t EUTRANFrequencies_0_earfcn_ber_ = { 1u, EUTRANFrequencies_0_earfcn_tag_ }; // No XER for EUTRANFrequencies_0_earfcn const int EUTRANFrequencies_0_earfcn_oer_ext_arr_[0] = {}; const int EUTRANFrequencies_0_earfcn_oer_p_[0] = {}; const TTCN_OERdescriptor_t EUTRANFrequencies_0_earfcn_oer_ = { 2, FALSE, -1, FALSE, 0, 0, EUTRANFrequencies_0_earfcn_oer_ext_arr_, 0, EUTRANFrequencies_0_earfcn_oer_p_}; static Per_Integer_Constraint EUTRANFrequencies_0_earfcn_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t EUTRANFrequencies_0_earfcn_per_ = { &EUTRANFrequencies_0_earfcn_per_cons_ }; const TTCN_Typedescriptor_t EUTRANFrequencies_0_earfcn_descr_ = { "@RANAP-IEs.EUTRANFrequencies.SEQUENCE.earfcn", &EUTRANFrequencies_0_earfcn_ber_, NULL, NULL, NULL, &INTEGER_json_, &EUTRANFrequencies_0_earfcn_oer_, &EUTRANFrequencies_0_earfcn_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EUTRANFrequencies_0_earfcn_default_coding(""); // No XER for EUTRANFrequencies_0 const TTCN_JSONdescriptor_t EUTRANFrequencies_0_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int EUTRANFrequencies_0_oer_ext_arr_[0] = {}; const int EUTRANFrequencies_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t EUTRANFrequencies_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EUTRANFrequencies_0_oer_ext_arr_, 3, EUTRANFrequencies_0_oer_p_}; static const Per_Constraint EUTRANFrequencies_0_per_cons_; const ASN_PERdescriptor_t EUTRANFrequencies_0_per_ = { &EUTRANFrequencies_0_per_cons_ }; const TTCN_Typedescriptor_t EUTRANFrequencies_0_descr_ = { "@RANAP-IEs.EUTRANFrequencies.SEQUENCE", &SEQUENCE_ber_, NULL, NULL, NULL, &EUTRANFrequencies_0_json_, &EUTRANFrequencies_0_oer_, &EUTRANFrequencies_0_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for MeasBand const TTCN_JSONdescriptor_t MeasBand_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int MeasBand_oer_ext_arr_[0] = {}; const int MeasBand_oer_p_[0] = {}; const TTCN_OERdescriptor_t MeasBand_oer_ = { -1, TRUE, -1, FALSE, 0, 0, MeasBand_oer_ext_arr_, 0, MeasBand_oer_p_}; static const Per_Constraint MeasBand_per_cons_; const ASN_PERdescriptor_t MeasBand_per_ = { &MeasBand_per_cons_ }; const TTCN_Typedescriptor_t MeasBand_descr_ = { "@RANAP-IEs.MeasBand", &ENUMERATED_ber_, NULL, NULL, NULL, &MeasBand_json_, &MeasBand_oer_, &MeasBand_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING MeasBand_default_coding(""); const ASN_Tag_t EUTRANFrequencies_0_measBand_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t EUTRANFrequencies_0_measBand_ber_ = { 1u, EUTRANFrequencies_0_measBand_tag_ }; // No XER for EUTRANFrequencies_0_measBand const int EUTRANFrequencies_0_measBand_oer_ext_arr_[0] = {}; const int EUTRANFrequencies_0_measBand_oer_p_[0] = {}; const TTCN_OERdescriptor_t EUTRANFrequencies_0_measBand_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EUTRANFrequencies_0_measBand_oer_ext_arr_, 0, EUTRANFrequencies_0_measBand_oer_p_}; const TTCN_Typedescriptor_t EUTRANFrequencies_0_measBand_descr_ = { "@RANAP-IEs.EUTRANFrequencies.SEQUENCE.measBand", &EUTRANFrequencies_0_measBand_ber_, NULL, NULL, NULL, &MeasBand_json_, &EUTRANFrequencies_0_measBand_oer_, &MeasBand_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EUTRANFrequencies_0_measBand_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst83", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst82.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst82.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst82.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for EUTRANFrequencies__ExtIEs_1_Extension const int EUTRANFrequencies__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int EUTRANFrequencies__ExtIEs_1_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t EUTRANFrequencies__ExtIEs_1_Extension_oer_ = { 4, FALSE, -1, FALSE, 0, 0, EUTRANFrequencies__ExtIEs_1_Extension_oer_ext_arr_, 0, EUTRANFrequencies__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t EUTRANFrequencies__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.EUTRANFrequencies-ExtIEs.1.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &EUTRANFrequencies__ExtIEs_1_Extension_oer_, &EARFCN__Extended_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_EUTRANFrequencies__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& EUTRANFrequencies__ExtIEs_1_criticality = const_EUTRANFrequencies__ExtIEs_1_criticality; INTEGER const_EUTRANFrequencies__ExtIEs_1_id; const INTEGER& EUTRANFrequencies__ExtIEs_1_id = const_EUTRANFrequencies__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_EUTRANFrequencies__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& EUTRANFrequencies__ExtIEs_1_presence = const_EUTRANFrequencies__ExtIEs_1_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst82.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst82", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst83.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst82_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_default_coding(""); const ASN_Tag_t EUTRANFrequencies_0_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t EUTRANFrequencies_0_iE__Extensions_ber_ = { 1u, EUTRANFrequencies_0_iE__Extensions_tag_ }; // No XER for EUTRANFrequencies_0_iE__Extensions const int EUTRANFrequencies_0_iE__Extensions_oer_ext_arr_[0] = {}; const int EUTRANFrequencies_0_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t EUTRANFrequencies_0_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EUTRANFrequencies_0_iE__Extensions_oer_ext_arr_, 0, EUTRANFrequencies_0_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t EUTRANFrequencies_0_iE__Extensions_descr_ = { "@RANAP-IEs.EUTRANFrequencies.SEQUENCE.iE-Extensions", &EUTRANFrequencies_0_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_json_, &EUTRANFrequencies_0_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst83_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING EUTRANFrequencies_0_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING EUTRANFrequencies_0_default_coding(""); UNIVERSAL_CHARSTRING EUTRANFrequencies_default_coding(""); const ASN_Tag_t IRATmeasurementParameters_eUTRANFrequencies_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IRATmeasurementParameters_eUTRANFrequencies_ber_ = { 1u, IRATmeasurementParameters_eUTRANFrequencies_tag_ }; // No XER for IRATmeasurementParameters_eUTRANFrequencies const int IRATmeasurementParameters_eUTRANFrequencies_oer_ext_arr_[0] = {}; const int IRATmeasurementParameters_eUTRANFrequencies_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRATmeasurementParameters_eUTRANFrequencies_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRATmeasurementParameters_eUTRANFrequencies_oer_ext_arr_, 0, IRATmeasurementParameters_eUTRANFrequencies_oer_p_}; const TTCN_Typedescriptor_t IRATmeasurementParameters_eUTRANFrequencies_descr_ = { "@RANAP-IEs.IRATmeasurementParameters.eUTRANFrequencies", &IRATmeasurementParameters_eUTRANFrequencies_ber_, NULL, NULL, NULL, &EUTRANFrequencies_json_, &IRATmeasurementParameters_eUTRANFrequencies_oer_, &EUTRANFrequencies_per_, &EUTRANFrequencies_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRATmeasurementParameters_eUTRANFrequencies_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst84", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst83.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst83.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst83.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst83.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst83", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst84.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst83_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_default_coding(""); const ASN_Tag_t IRATmeasurementParameters_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t IRATmeasurementParameters_iE__Extensions_ber_ = { 1u, IRATmeasurementParameters_iE__Extensions_tag_ }; // No XER for IRATmeasurementParameters_iE__Extensions const int IRATmeasurementParameters_iE__Extensions_oer_ext_arr_[0] = {}; const int IRATmeasurementParameters_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRATmeasurementParameters_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRATmeasurementParameters_iE__Extensions_oer_ext_arr_, 0, IRATmeasurementParameters_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t IRATmeasurementParameters_iE__Extensions_descr_ = { "@RANAP-IEs.IRATmeasurementParameters.iE-Extensions", &IRATmeasurementParameters_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_json_, &IRATmeasurementParameters_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst84_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRATmeasurementParameters_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING IRATmeasurementParameters_default_coding(""); const ASN_Tag_t IRAT__Measurement__Configuration_iRATmeasurementParameters_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t IRAT__Measurement__Configuration_iRATmeasurementParameters_ber_ = { 1u, IRAT__Measurement__Configuration_iRATmeasurementParameters_tag_ }; // No XER for IRAT__Measurement__Configuration_iRATmeasurementParameters const int IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_ext_arr_, 3, IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_p_}; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_iRATmeasurementParameters_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration.iRATmeasurementParameters", &IRAT__Measurement__Configuration_iRATmeasurementParameters_ber_, NULL, NULL, NULL, &IRATmeasurementParameters_json_, &IRAT__Measurement__Configuration_iRATmeasurementParameters_oer_, &IRATmeasurementParameters_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_iRATmeasurementParameters_default_coding(""); // No XER for IRAT__Measurement__Configuration const TTCN_JSONdescriptor_t IRAT__Measurement__Configuration_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int IRAT__Measurement__Configuration_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration_oer_ext_arr_, 4, IRAT__Measurement__Configuration_oer_p_}; static const Per_Constraint IRAT__Measurement__Configuration_per_cons_; const ASN_PERdescriptor_t IRAT__Measurement__Configuration_per_ = { &IRAT__Measurement__Configuration_per_cons_ }; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration", &SEQUENCE_ber_, NULL, NULL, NULL, &IRAT__Measurement__Configuration_json_, &IRAT__Measurement__Configuration_oer_, &IRAT__Measurement__Configuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t IRAT__Measurement__Configuration_rSRP_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t IRAT__Measurement__Configuration_rSRP_ber_ = { 1u, IRAT__Measurement__Configuration_rSRP_tag_ }; // No XER for IRAT__Measurement__Configuration_rSRP const int IRAT__Measurement__Configuration_rSRP_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration_rSRP_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_rSRP_oer_ = { 1, FALSE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration_rSRP_oer_ext_arr_, 0, IRAT__Measurement__Configuration_rSRP_oer_p_}; static Per_Integer_Constraint IRAT__Measurement__Configuration_rSRP_per_cons_(new INTEGER(0), new INTEGER(97), FALSE); const ASN_PERdescriptor_t IRAT__Measurement__Configuration_rSRP_per_ = { &IRAT__Measurement__Configuration_rSRP_per_cons_ }; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_rSRP_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration.rSRP", &IRAT__Measurement__Configuration_rSRP_ber_, NULL, NULL, NULL, &INTEGER_json_, &IRAT__Measurement__Configuration_rSRP_oer_, &IRAT__Measurement__Configuration_rSRP_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_rSRP_default_coding(""); const ASN_Tag_t IRAT__Measurement__Configuration_rSRQ_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t IRAT__Measurement__Configuration_rSRQ_ber_ = { 1u, IRAT__Measurement__Configuration_rSRQ_tag_ }; // No XER for IRAT__Measurement__Configuration_rSRQ const int IRAT__Measurement__Configuration_rSRQ_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration_rSRQ_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_rSRQ_oer_ = { 1, FALSE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration_rSRQ_oer_ext_arr_, 0, IRAT__Measurement__Configuration_rSRQ_oer_p_}; static Per_Integer_Constraint IRAT__Measurement__Configuration_rSRQ_per_cons_(new INTEGER(0), new INTEGER(34), FALSE); const ASN_PERdescriptor_t IRAT__Measurement__Configuration_rSRQ_per_ = { &IRAT__Measurement__Configuration_rSRQ_per_cons_ }; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_rSRQ_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration.rSRQ", &IRAT__Measurement__Configuration_rSRQ_ber_, NULL, NULL, NULL, &INTEGER_json_, &IRAT__Measurement__Configuration_rSRQ_oer_, &IRAT__Measurement__Configuration_rSRQ_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_rSRQ_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst85", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst84.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst84.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst84.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t RSRQ__Type_allSymbols_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t RSRQ__Type_allSymbols_ber_ = { 1u, RSRQ__Type_allSymbols_tag_ }; // No XER for RSRQ__Type_allSymbols const int RSRQ__Type_allSymbols_oer_ext_arr_[0] = {}; const int RSRQ__Type_allSymbols_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRQ__Type_allSymbols_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRQ__Type_allSymbols_oer_ext_arr_, 0, RSRQ__Type_allSymbols_oer_p_}; const TTCN_Typedescriptor_t RSRQ__Type_allSymbols_descr_ = { "@RANAP-IEs.RSRQ-Type.allSymbols", &RSRQ__Type_allSymbols_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, NULL, &BOOLEAN_json_, &RSRQ__Type_allSymbols_oer_, &BOOLEAN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRQ__Type_allSymbols_default_coding(""); const ASN_Tag_t RSRQ__Type_wideBand_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t RSRQ__Type_wideBand_ber_ = { 1u, RSRQ__Type_wideBand_tag_ }; // No XER for RSRQ__Type_wideBand const int RSRQ__Type_wideBand_oer_ext_arr_[0] = {}; const int RSRQ__Type_wideBand_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRQ__Type_wideBand_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRQ__Type_wideBand_oer_ext_arr_, 0, RSRQ__Type_wideBand_oer_p_}; const TTCN_Typedescriptor_t RSRQ__Type_wideBand_descr_ = { "@RANAP-IEs.RSRQ-Type.wideBand", &RSRQ__Type_wideBand_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, NULL, &BOOLEAN_json_, &RSRQ__Type_wideBand_oer_, &BOOLEAN_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRQ__Type_wideBand_default_coding(""); // No XER for RSRQ__Type const TTCN_JSONdescriptor_t RSRQ__Type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int RSRQ__Type_oer_ext_arr_[0] = {}; const int RSRQ__Type_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t RSRQ__Type_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RSRQ__Type_oer_ext_arr_, 2, RSRQ__Type_oer_p_}; static const Per_Constraint RSRQ__Type_per_cons_; const ASN_PERdescriptor_t RSRQ__Type_per_ = { &RSRQ__Type_per_cons_ }; const TTCN_Typedescriptor_t RSRQ__Type_descr_ = { "@RANAP-IEs.RSRQ-Type", &SEQUENCE_ber_, NULL, NULL, NULL, &RSRQ__Type_json_, &RSRQ__Type_oer_, &RSRQ__Type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRQ__Type_default_coding(""); // No XER for IRAT__Measurement__Configuration__ExtIEs_1_Extension const int IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_ext_arr_, 2, IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_p_}; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__ExtIEs_1_Extension_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration-ExtIEs.1.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &RSRQ__Type_json_, &IRAT__Measurement__Configuration__ExtIEs_1_Extension_oer_, &RSRQ__Type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_IRAT__Measurement__Configuration__ExtIEs_1_criticality; const RANAP__CommonDataTypes::Criticality& IRAT__Measurement__Configuration__ExtIEs_1_criticality = const_IRAT__Measurement__Configuration__ExtIEs_1_criticality; INTEGER const_IRAT__Measurement__Configuration__ExtIEs_1_id; const INTEGER& IRAT__Measurement__Configuration__ExtIEs_1_id = const_IRAT__Measurement__Configuration__ExtIEs_1_id; RANAP__CommonDataTypes::Presence const_IRAT__Measurement__Configuration__ExtIEs_1_presence; const RANAP__CommonDataTypes::Presence& IRAT__Measurement__Configuration__ExtIEs_1_presence = const_IRAT__Measurement__Configuration__ExtIEs_1_presence; // No XER for RSRQ__Extension const int RSRQ__Extension_oer_ext_arr_[0] = {}; const int RSRQ__Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t RSRQ__Extension_oer_ = { 1, TRUE, -1, FALSE, 0, 0, RSRQ__Extension_oer_ext_arr_, 0, RSRQ__Extension_oer_p_}; static Per_Integer_Constraint RSRQ__Extension_per_cons_(new INTEGER(-30), new INTEGER(46), TRUE); const ASN_PERdescriptor_t RSRQ__Extension_per_ = { &RSRQ__Extension_per_cons_ }; const TTCN_Typedescriptor_t RSRQ__Extension_descr_ = { "@RANAP-IEs.RSRQ-Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &RSRQ__Extension_oer_, &RSRQ__Extension_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING RSRQ__Extension_default_coding(""); // No XER for IRAT__Measurement__Configuration__ExtIEs_2_Extension const int IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_ = { 1, TRUE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_ext_arr_, 0, IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_p_}; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration__ExtIEs_2_Extension_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration-ExtIEs.2.&Extension", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &IRAT__Measurement__Configuration__ExtIEs_2_Extension_oer_, &RSRQ__Extension_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_IRAT__Measurement__Configuration__ExtIEs_2_criticality; const RANAP__CommonDataTypes::Criticality& IRAT__Measurement__Configuration__ExtIEs_2_criticality = const_IRAT__Measurement__Configuration__ExtIEs_2_criticality; INTEGER const_IRAT__Measurement__Configuration__ExtIEs_2_id; const INTEGER& IRAT__Measurement__Configuration__ExtIEs_2_id = const_IRAT__Measurement__Configuration__ExtIEs_2_id; RANAP__CommonDataTypes::Presence const_IRAT__Measurement__Configuration__ExtIEs_2_presence; const RANAP__CommonDataTypes::Presence& IRAT__Measurement__Configuration__ExtIEs_2_presence = const_IRAT__Measurement__Configuration__ExtIEs_2_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst84.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst84", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst85.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst84_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_default_coding(""); const ASN_Tag_t IRAT__Measurement__Configuration_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t IRAT__Measurement__Configuration_iE__Extensions_ber_ = { 1u, IRAT__Measurement__Configuration_iE__Extensions_tag_ }; // No XER for IRAT__Measurement__Configuration_iE__Extensions const int IRAT__Measurement__Configuration_iE__Extensions_oer_ext_arr_[0] = {}; const int IRAT__Measurement__Configuration_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t IRAT__Measurement__Configuration_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, IRAT__Measurement__Configuration_iE__Extensions_oer_ext_arr_, 0, IRAT__Measurement__Configuration_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t IRAT__Measurement__Configuration_iE__Extensions_descr_ = { "@RANAP-IEs.IRAT-Measurement-Configuration.iE-Extensions", &IRAT__Measurement__Configuration_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_json_, &IRAT__Measurement__Configuration_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst85_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING IRAT__Measurement__Configuration_default_coding(""); // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_ext_arr_, 4, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.11.&Extension", &SEQUENCE_ber_, NULL, NULL, NULL, &IRAT__Measurement__Configuration_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_Extension_oer_, &IRAT__Measurement__Configuration_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_11_presence; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_12_presence; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_13_presence; // No XER for SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_ = { -1, TRUE, 3, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer-ExtIEs.14.&Extension", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_Extension_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; RANAP__CommonDataTypes::Criticality const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_criticality; const RANAP__CommonDataTypes::Criticality& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_criticality = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_criticality; INTEGER const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_id; const INTEGER& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_id = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_id; RANAP__CommonDataTypes::Presence const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_presence; const RANAP__CommonDataTypes::Presence& SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_presence = const_SourceRNC__ToTargetRNC__TransparentContainer__ExtIEs_14_presence; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst85.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst85", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst79.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst85_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_default_coding(""); const ASN_Tag_t SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 12u }}; const ASN_BERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_ber_ = { 1u, SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_tag_ }; // No XER for SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions const int SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_ext_arr_[0] = {}; const int SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_ext_arr_, 0, SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_descr_ = { "@RANAP-IEs.SourceRNC-ToTargetRNC-TransparentContainer.iE-Extensions", &SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_json_, &SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst79_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING SourceRNC__ToTargetRNC__TransparentContainer_default_coding(""); // No XER for SRVCC__HO__Indication const TTCN_JSONdescriptor_t SRVCC__HO__Indication_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SRVCC__HO__Indication_oer_ext_arr_[0] = {}; const int SRVCC__HO__Indication_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__HO__Indication_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__HO__Indication_oer_ext_arr_, 0, SRVCC__HO__Indication_oer_p_}; static const Per_Constraint SRVCC__HO__Indication_per_cons_; const ASN_PERdescriptor_t SRVCC__HO__Indication_per_ = { &SRVCC__HO__Indication_per_cons_ }; const TTCN_Typedescriptor_t SRVCC__HO__Indication_descr_ = { "@RANAP-IEs.SRVCC-HO-Indication", &ENUMERATED_ber_, NULL, NULL, NULL, &SRVCC__HO__Indication_json_, &SRVCC__HO__Indication_oer_, &SRVCC__HO__Indication_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__HO__Indication_default_coding(""); // No XER for SRVCC__Operation__Possible const TTCN_JSONdescriptor_t SRVCC__Operation__Possible_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int SRVCC__Operation__Possible_oer_ext_arr_[0] = {}; const int SRVCC__Operation__Possible_oer_p_[0] = {}; const TTCN_OERdescriptor_t SRVCC__Operation__Possible_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SRVCC__Operation__Possible_oer_ext_arr_, 0, SRVCC__Operation__Possible_oer_p_}; static const Per_Constraint SRVCC__Operation__Possible_per_cons_; const ASN_PERdescriptor_t SRVCC__Operation__Possible_per_ = { &SRVCC__Operation__Possible_per_cons_ }; const TTCN_Typedescriptor_t SRVCC__Operation__Possible_descr_ = { "@RANAP-IEs.SRVCC-Operation-Possible", &ENUMERATED_ber_, NULL, NULL, NULL, &SRVCC__Operation__Possible_json_, &SRVCC__Operation__Possible_oer_, &SRVCC__Operation__Possible_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING SRVCC__Operation__Possible_default_coding(""); const TTCN_Typedescriptor_t& Target__ToSource__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING Target__ToSource__TransparentContainer_default_coding(""); const TTCN_Typedescriptor_t& TargeteNodeB__ToSourceeNodeB__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING TargeteNodeB__ToSourceeNodeB__TransparentContainer_default_coding(""); const TTCN_Typedescriptor_t& TargetBSS__ToSourceBSS__TransparentContainer_descr_ = OCTETSTRING_descr_; UNIVERSAL_CHARSTRING TargetBSS__ToSourceBSS__TransparentContainer_default_coding(""); // No XER for TargetID const TTCN_JSONdescriptor_t TargetID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TargetID_oer_ext_arr_[0] = {}; const int TargetID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, TargetID_oer_ext_arr_, 0, TargetID_oer_p_}; static const Per_Constraint TargetID_per_cons_; const ASN_PERdescriptor_t TargetID_per_ = { &TargetID_per_cons_ }; const TTCN_Typedescriptor_t TargetID_descr_ = { "@RANAP-IEs.TargetID", &CHOICE_ber_, NULL, NULL, NULL, &TargetID_json_, &TargetID_oer_, &TargetID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TargetID_targetRNC__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TargetID_targetRNC__ID_ber_ = { 1u, TargetID_targetRNC__ID_tag_ }; // No XER for TargetID_targetRNC__ID const int TargetID_targetRNC__ID_oer_ext_arr_[0] = {}; const int TargetID_targetRNC__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TargetID_targetRNC__ID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetID_targetRNC__ID_oer_ext_arr_, 4, TargetID_targetRNC__ID_oer_p_}; const TTCN_Typedescriptor_t TargetID_targetRNC__ID_descr_ = { "@RANAP-IEs.TargetID.targetRNC-ID", &TargetID_targetRNC__ID_ber_, NULL, NULL, NULL, &TargetRNC__ID_json_, &TargetID_targetRNC__ID_oer_, &TargetRNC__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetID_targetRNC__ID_default_coding(""); const ASN_Tag_t TargetID_cGI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TargetID_cGI_ber_ = { 1u, TargetID_cGI_tag_ }; // No XER for TargetID_cGI const int TargetID_cGI_oer_ext_arr_[0] = {}; const int TargetID_cGI_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TargetID_cGI_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetID_cGI_oer_ext_arr_, 4, TargetID_cGI_oer_p_}; const TTCN_Typedescriptor_t TargetID_cGI_descr_ = { "@RANAP-IEs.TargetID.cGI", &TargetID_cGI_ber_, NULL, NULL, NULL, &CGI_json_, &TargetID_cGI_oer_, &CGI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetID_cGI_default_coding(""); const ASN_Tag_t TargetID_targeteNB__ID_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TargetID_targeteNB__ID_ber_ = { 1u, TargetID_targeteNB__ID_tag_ }; // No XER for TargetID_targeteNB__ID const int TargetID_targeteNB__ID_oer_ext_arr_[0] = {}; const int TargetID_targeteNB__ID_oer_p_[4] = {0, 1, 2, 3}; const TTCN_OERdescriptor_t TargetID_targeteNB__ID_oer_ = { -1, TRUE, -1, TRUE, 4, 0, TargetID_targeteNB__ID_oer_ext_arr_, 4, TargetID_targeteNB__ID_oer_p_}; const TTCN_Typedescriptor_t TargetID_targeteNB__ID_descr_ = { "@RANAP-IEs.TargetID.targeteNB-ID", &TargetID_targeteNB__ID_ber_, NULL, NULL, NULL, &TargetENB__ID_json_, &TargetID_targeteNB__ID_oer_, &TargetENB__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetID_targeteNB__ID_default_coding(""); UNIVERSAL_CHARSTRING TargetID_default_coding(""); const ASN_Tag_t TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_ber_ = { 1u, TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_tag_ }; // No XER for TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container const int TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_ext_arr_[0] = {}; const int TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_ext_arr_, 0, TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_descr_ = { "@RANAP-IEs.TargetRNC-ToSourceRNC-TransparentContainer.rRC-Container", &TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_oer_, &OCTETSTRING_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ToSourceRNC__TransparentContainer_rRC__Container_default_coding(""); // No XER for TargetRNC__ToSourceRNC__TransparentContainer const TTCN_JSONdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TargetRNC__ToSourceRNC__TransparentContainer_oer_ext_arr_[0] = {}; const int TargetRNC__ToSourceRNC__TransparentContainer_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_oer_ = { -1, TRUE, -1, TRUE, 3, 0, TargetRNC__ToSourceRNC__TransparentContainer_oer_ext_arr_, 3, TargetRNC__ToSourceRNC__TransparentContainer_oer_p_}; static const Per_Constraint TargetRNC__ToSourceRNC__TransparentContainer_per_cons_; const ASN_PERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_per_ = { &TargetRNC__ToSourceRNC__TransparentContainer_per_cons_ }; const TTCN_Typedescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_descr_ = { "@RANAP-IEs.TargetRNC-ToSourceRNC-TransparentContainer", &SEQUENCE_ber_, NULL, NULL, NULL, &TargetRNC__ToSourceRNC__TransparentContainer_json_, &TargetRNC__ToSourceRNC__TransparentContainer_oer_, &TargetRNC__ToSourceRNC__TransparentContainer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_ber_ = { 1u, TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_tag_ }; // No XER for TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI const int TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_ext_arr_[0] = {}; const int TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_ = { 4, FALSE, -1, FALSE, 0, 0, TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_ext_arr_, 0, TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_descr_ = { "@RANAP-IEs.TargetRNC-ToSourceRNC-TransparentContainer.d-RNTI", &TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_ber_, NULL, NULL, NULL, &INTEGER_json_, &TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_oer_, &D__RNTI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ToSourceRNC__TransparentContainer_d__RNTI_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst86", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst86.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst86.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst86.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst86.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst86", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst86.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst86_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_default_coding(""); const ASN_Tag_t TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_ber_ = { 1u, TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_tag_ }; // No XER for TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions const int TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_ext_arr_[0] = {}; const int TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_ext_arr_, 0, TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_descr_ = { "@RANAP-IEs.TargetRNC-ToSourceRNC-TransparentContainer.iE-Extensions", &TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_json_, &TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst86_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TargetRNC__ToSourceRNC__TransparentContainer_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TargetRNC__ToSourceRNC__TransparentContainer_default_coding(""); // No XER for TemporaryUE__ID const TTCN_JSONdescriptor_t TemporaryUE__ID_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TemporaryUE__ID_oer_ext_arr_[0] = {}; const int TemporaryUE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TemporaryUE__ID_oer_ = { -1, TRUE, -1, TRUE, 2, 0, TemporaryUE__ID_oer_ext_arr_, 0, TemporaryUE__ID_oer_p_}; static const Per_Constraint TemporaryUE__ID_per_cons_; const ASN_PERdescriptor_t TemporaryUE__ID_per_ = { &TemporaryUE__ID_per_cons_ }; const TTCN_Typedescriptor_t TemporaryUE__ID_descr_ = { "@RANAP-IEs.TemporaryUE-ID", &CHOICE_ber_, NULL, NULL, NULL, &TemporaryUE__ID_json_, &TemporaryUE__ID_oer_, &TemporaryUE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for TMSI const int TMSI_oer_ext_arr_[0] = {}; const int TMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t TMSI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TMSI_oer_ext_arr_, 0, TMSI_oer_p_}; static Per_Integer_Constraint TMSI_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(4), FALSE); const ASN_PERdescriptor_t TMSI_per_ = { &TMSI_per_cons_ }; const TTCN_Typedescriptor_t TMSI_descr_ = { "@RANAP-IEs.TMSI", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TMSI_oer_, &TMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TMSI_default_coding(""); const ASN_Tag_t TemporaryUE__ID_tMSI_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TemporaryUE__ID_tMSI_ber_ = { 1u, TemporaryUE__ID_tMSI_tag_ }; // No XER for TemporaryUE__ID_tMSI const int TemporaryUE__ID_tMSI_oer_ext_arr_[0] = {}; const int TemporaryUE__ID_tMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t TemporaryUE__ID_tMSI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TemporaryUE__ID_tMSI_oer_ext_arr_, 0, TemporaryUE__ID_tMSI_oer_p_}; const TTCN_Typedescriptor_t TemporaryUE__ID_tMSI_descr_ = { "@RANAP-IEs.TemporaryUE-ID.tMSI", &TemporaryUE__ID_tMSI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TemporaryUE__ID_tMSI_oer_, &TMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TemporaryUE__ID_tMSI_default_coding(""); const ASN_Tag_t TemporaryUE__ID_p__TMSI_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TemporaryUE__ID_p__TMSI_ber_ = { 1u, TemporaryUE__ID_p__TMSI_tag_ }; // No XER for TemporaryUE__ID_p__TMSI const int TemporaryUE__ID_p__TMSI_oer_ext_arr_[0] = {}; const int TemporaryUE__ID_p__TMSI_oer_p_[0] = {}; const TTCN_OERdescriptor_t TemporaryUE__ID_p__TMSI_oer_ = { -1, TRUE, 4, FALSE, 0, 0, TemporaryUE__ID_p__TMSI_oer_ext_arr_, 0, TemporaryUE__ID_p__TMSI_oer_p_}; const TTCN_Typedescriptor_t TemporaryUE__ID_p__TMSI_descr_ = { "@RANAP-IEs.TemporaryUE-ID.p-TMSI", &TemporaryUE__ID_p__TMSI_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TemporaryUE__ID_p__TMSI_oer_, &P__TMSI_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TemporaryUE__ID_p__TMSI_default_coding(""); UNIVERSAL_CHARSTRING TemporaryUE__ID_default_coding(""); // No XER for TimeToMBMSDataTransfer const int TimeToMBMSDataTransfer_oer_ext_arr_[0] = {}; const int TimeToMBMSDataTransfer_oer_p_[0] = {}; const TTCN_OERdescriptor_t TimeToMBMSDataTransfer_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TimeToMBMSDataTransfer_oer_ext_arr_, 0, TimeToMBMSDataTransfer_oer_p_}; static Per_Integer_Constraint TimeToMBMSDataTransfer_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t TimeToMBMSDataTransfer_per_ = { &TimeToMBMSDataTransfer_per_cons_ }; const TTCN_Typedescriptor_t TimeToMBMSDataTransfer_descr_ = { "@RANAP-IEs.TimeToMBMSDataTransfer", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TimeToMBMSDataTransfer_oer_, &TimeToMBMSDataTransfer_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TimeToMBMSDataTransfer_default_coding(""); // No XER for TraceType const int TraceType_oer_ext_arr_[0] = {}; const int TraceType_oer_p_[0] = {}; const TTCN_OERdescriptor_t TraceType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TraceType_oer_ext_arr_, 0, TraceType_oer_p_}; static Per_Integer_Constraint TraceType_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(1), FALSE); const ASN_PERdescriptor_t TraceType_per_ = { &TraceType_per_cons_ }; const TTCN_Typedescriptor_t TraceType_descr_ = { "@RANAP-IEs.TraceType", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TraceType_oer_, &TraceType_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TraceType_default_coding(""); // No XER for TriggerID const int TriggerID_oer_ext_arr_[0] = {}; const int TriggerID_oer_p_[0] = {}; const TTCN_OERdescriptor_t TriggerID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TriggerID_oer_ext_arr_, 0, TriggerID_oer_p_}; static Per_Integer_Constraint TriggerID_per_cons_(new INTEGER(3), new INTEGER(22), FALSE); const ASN_PERdescriptor_t TriggerID_per_ = { &TriggerID_per_cons_ }; const TTCN_Typedescriptor_t TriggerID_descr_ = { "@RANAP-IEs.TriggerID", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TriggerID_oer_, &TriggerID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TriggerID_default_coding(""); const ASN_Tag_t TunnelInformation_transportLayerAddress_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t TunnelInformation_transportLayerAddress_ber_ = { 1u, TunnelInformation_transportLayerAddress_tag_ }; // No XER for TunnelInformation_transportLayerAddress const int TunnelInformation_transportLayerAddress_oer_ext_arr_[0] = {}; const int TunnelInformation_transportLayerAddress_oer_p_[0] = {}; const TTCN_OERdescriptor_t TunnelInformation_transportLayerAddress_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TunnelInformation_transportLayerAddress_oer_ext_arr_, 0, TunnelInformation_transportLayerAddress_oer_p_}; const TTCN_Typedescriptor_t TunnelInformation_transportLayerAddress_descr_ = { "@RANAP-IEs.TunnelInformation.transportLayerAddress", &TunnelInformation_transportLayerAddress_ber_, NULL, NULL, NULL, &BITSTRING_json_, &TunnelInformation_transportLayerAddress_oer_, &TransportLayerAddress_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TunnelInformation_transportLayerAddress_default_coding(""); // No XER for TunnelInformation const TTCN_JSONdescriptor_t TunnelInformation_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int TunnelInformation_oer_ext_arr_[0] = {}; const int TunnelInformation_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t TunnelInformation_oer_ = { -1, TRUE, -1, TRUE, 3, 0, TunnelInformation_oer_ext_arr_, 3, TunnelInformation_oer_p_}; static const Per_Constraint TunnelInformation_per_cons_; const ASN_PERdescriptor_t TunnelInformation_per_ = { &TunnelInformation_per_cons_ }; const TTCN_Typedescriptor_t TunnelInformation_descr_ = { "@RANAP-IEs.TunnelInformation", &SEQUENCE_ber_, NULL, NULL, NULL, &TunnelInformation_json_, &TunnelInformation_oer_, &TunnelInformation_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t TunnelInformation_uDP__Port__Number_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t TunnelInformation_uDP__Port__Number_ber_ = { 1u, TunnelInformation_uDP__Port__Number_tag_ }; // No XER for TunnelInformation_uDP__Port__Number const int TunnelInformation_uDP__Port__Number_oer_ext_arr_[0] = {}; const int TunnelInformation_uDP__Port__Number_oer_p_[0] = {}; const TTCN_OERdescriptor_t TunnelInformation_uDP__Port__Number_oer_ = { -1, TRUE, 2, FALSE, 0, 0, TunnelInformation_uDP__Port__Number_oer_ext_arr_, 0, TunnelInformation_uDP__Port__Number_oer_p_}; const TTCN_Typedescriptor_t TunnelInformation_uDP__Port__Number_descr_ = { "@RANAP-IEs.TunnelInformation.uDP-Port-Number", &TunnelInformation_uDP__Port__Number_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &TunnelInformation_uDP__Port__Number_oer_, &Port__Number_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TunnelInformation_uDP__Port__Number_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst87", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst87.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst87.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst87.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst87.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst87", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst87.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst87_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_default_coding(""); const ASN_Tag_t TunnelInformation_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t TunnelInformation_iE__Extensions_ber_ = { 1u, TunnelInformation_iE__Extensions_tag_ }; // No XER for TunnelInformation_iE__Extensions const int TunnelInformation_iE__Extensions_oer_ext_arr_[0] = {}; const int TunnelInformation_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t TunnelInformation_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TunnelInformation_iE__Extensions_oer_ext_arr_, 0, TunnelInformation_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t TunnelInformation_iE__Extensions_descr_ = { "@RANAP-IEs.TunnelInformation.iE-Extensions", &TunnelInformation_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_json_, &TunnelInformation_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst87_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING TunnelInformation_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING TunnelInformation_default_coding(""); // No XER for UE__AggregateMaximumBitRate const TTCN_JSONdescriptor_t UE__AggregateMaximumBitRate_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__AggregateMaximumBitRate_oer_ext_arr_[0] = {}; const int UE__AggregateMaximumBitRate_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t UE__AggregateMaximumBitRate_oer_ = { -1, TRUE, -1, TRUE, 2, 0, UE__AggregateMaximumBitRate_oer_ext_arr_, 2, UE__AggregateMaximumBitRate_oer_p_}; static const Per_Constraint UE__AggregateMaximumBitRate_per_cons_; const ASN_PERdescriptor_t UE__AggregateMaximumBitRate_per_ = { &UE__AggregateMaximumBitRate_per_cons_ }; const TTCN_Typedescriptor_t UE__AggregateMaximumBitRate_descr_ = { "@RANAP-IEs.UE-AggregateMaximumBitRate", &SEQUENCE_ber_, NULL, NULL, NULL, &UE__AggregateMaximumBitRate_json_, &UE__AggregateMaximumBitRate_oer_, &UE__AggregateMaximumBitRate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for UE__AggregateMaximumBitRateDownlink const int UE__AggregateMaximumBitRateDownlink_oer_ext_arr_[0] = {}; const int UE__AggregateMaximumBitRateDownlink_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__AggregateMaximumBitRateDownlink_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UE__AggregateMaximumBitRateDownlink_oer_ext_arr_, 0, UE__AggregateMaximumBitRateDownlink_oer_p_}; static Per_Integer_Constraint UE__AggregateMaximumBitRateDownlink_per_cons_(new INTEGER(1), new INTEGER(1000000000), FALSE); const ASN_PERdescriptor_t UE__AggregateMaximumBitRateDownlink_per_ = { &UE__AggregateMaximumBitRateDownlink_per_cons_ }; const TTCN_Typedescriptor_t UE__AggregateMaximumBitRateDownlink_descr_ = { "@RANAP-IEs.UE-AggregateMaximumBitRateDownlink", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UE__AggregateMaximumBitRateDownlink_oer_, &UE__AggregateMaximumBitRateDownlink_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AggregateMaximumBitRateDownlink_default_coding(""); const ASN_Tag_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_ber_ = { 1u, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_tag_ }; // No XER for UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink const int UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_ext_arr_[0] = {}; const int UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_ext_arr_, 0, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_p_}; const TTCN_Typedescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_descr_ = { "@RANAP-IEs.UE-AggregateMaximumBitRate.uE-AggregateMaximumBitRateDownlink", &UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_ber_, NULL, NULL, NULL, &INTEGER_json_, &UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_oer_, &UE__AggregateMaximumBitRateDownlink_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateDownlink_default_coding(""); // No XER for UE__AggregateMaximumBitRateUplink const int UE__AggregateMaximumBitRateUplink_oer_ext_arr_[0] = {}; const int UE__AggregateMaximumBitRateUplink_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__AggregateMaximumBitRateUplink_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UE__AggregateMaximumBitRateUplink_oer_ext_arr_, 0, UE__AggregateMaximumBitRateUplink_oer_p_}; static Per_Integer_Constraint UE__AggregateMaximumBitRateUplink_per_cons_(new INTEGER(1), new INTEGER(1000000000), FALSE); const ASN_PERdescriptor_t UE__AggregateMaximumBitRateUplink_per_ = { &UE__AggregateMaximumBitRateUplink_per_cons_ }; const TTCN_Typedescriptor_t UE__AggregateMaximumBitRateUplink_descr_ = { "@RANAP-IEs.UE-AggregateMaximumBitRateUplink", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UE__AggregateMaximumBitRateUplink_oer_, &UE__AggregateMaximumBitRateUplink_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AggregateMaximumBitRateUplink_default_coding(""); const ASN_Tag_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_ber_ = { 1u, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_tag_ }; // No XER for UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink const int UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_ext_arr_[0] = {}; const int UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_ = { 4, FALSE, -1, FALSE, 0, 0, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_ext_arr_, 0, UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_p_}; const TTCN_Typedescriptor_t UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_descr_ = { "@RANAP-IEs.UE-AggregateMaximumBitRate.uE-AggregateMaximumBitRateUplink", &UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_ber_, NULL, NULL, NULL, &INTEGER_json_, &UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_oer_, &UE__AggregateMaximumBitRateUplink_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__AggregateMaximumBitRate_uE__AggregateMaximumBitRateUplink_default_coding(""); UNIVERSAL_CHARSTRING UE__AggregateMaximumBitRate_default_coding(""); const ASN_Tag_t UE__IsNotServed_permanentNAS__UE__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__IsNotServed_permanentNAS__UE__ID_ber_ = { 1u, UE__IsNotServed_permanentNAS__UE__ID_tag_ }; // No XER for UE__IsNotServed_permanentNAS__UE__ID const int UE__IsNotServed_permanentNAS__UE__ID_oer_ext_arr_[0] = {}; const int UE__IsNotServed_permanentNAS__UE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__IsNotServed_permanentNAS__UE__ID_oer_ = { -1, TRUE, -1, TRUE, 1, 0, UE__IsNotServed_permanentNAS__UE__ID_oer_ext_arr_, 0, UE__IsNotServed_permanentNAS__UE__ID_oer_p_}; const TTCN_Typedescriptor_t UE__IsNotServed_permanentNAS__UE__ID_descr_ = { "@RANAP-IEs.UE-IsNotServed.permanentNAS-UE-ID", &UE__IsNotServed_permanentNAS__UE__ID_ber_, NULL, NULL, NULL, &PermanentNAS__UE__ID_json_, &UE__IsNotServed_permanentNAS__UE__ID_oer_, &PermanentNAS__UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__IsNotServed_permanentNAS__UE__ID_default_coding(""); // No XER for UE__IsNotServed const TTCN_JSONdescriptor_t UE__IsNotServed_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__IsNotServed_oer_ext_arr_[0] = {}; const int UE__IsNotServed_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t UE__IsNotServed_oer_ = { -1, TRUE, -1, TRUE, 2, 0, UE__IsNotServed_oer_ext_arr_, 2, UE__IsNotServed_oer_p_}; static const Per_Constraint UE__IsNotServed_per_cons_; const ASN_PERdescriptor_t UE__IsNotServed_per_ = { &UE__IsNotServed_per_cons_ }; const TTCN_Typedescriptor_t UE__IsNotServed_descr_ = { "@RANAP-IEs.UE-IsNotServed", &SEQUENCE_ber_, NULL, NULL, NULL, &UE__IsNotServed_json_, &UE__IsNotServed_oer_, &UE__IsNotServed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst88", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst88.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst88.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst88.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst88.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst88", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst88.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst88_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_default_coding(""); const ASN_Tag_t UE__IsNotServed_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__IsNotServed_iE__Extensions_ber_ = { 1u, UE__IsNotServed_iE__Extensions_tag_ }; // No XER for UE__IsNotServed_iE__Extensions const int UE__IsNotServed_iE__Extensions_oer_ext_arr_[0] = {}; const int UE__IsNotServed_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__IsNotServed_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__IsNotServed_iE__Extensions_oer_ext_arr_, 0, UE__IsNotServed_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t UE__IsNotServed_iE__Extensions_descr_ = { "@RANAP-IEs.UE-IsNotServed.iE-Extensions", &UE__IsNotServed_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_json_, &UE__IsNotServed_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst88_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__IsNotServed_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING UE__IsNotServed_default_coding(""); const ASN_Tag_t UE__IsServed_permanentNAS__UE__ID_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UE__IsServed_permanentNAS__UE__ID_ber_ = { 1u, UE__IsServed_permanentNAS__UE__ID_tag_ }; // No XER for UE__IsServed_permanentNAS__UE__ID const int UE__IsServed_permanentNAS__UE__ID_oer_ext_arr_[0] = {}; const int UE__IsServed_permanentNAS__UE__ID_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__IsServed_permanentNAS__UE__ID_oer_ = { -1, TRUE, -1, TRUE, 1, 0, UE__IsServed_permanentNAS__UE__ID_oer_ext_arr_, 0, UE__IsServed_permanentNAS__UE__ID_oer_p_}; const TTCN_Typedescriptor_t UE__IsServed_permanentNAS__UE__ID_descr_ = { "@RANAP-IEs.UE-IsServed.permanentNAS-UE-ID", &UE__IsServed_permanentNAS__UE__ID_ber_, NULL, NULL, NULL, &PermanentNAS__UE__ID_json_, &UE__IsServed_permanentNAS__UE__ID_oer_, &PermanentNAS__UE__ID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__IsServed_permanentNAS__UE__ID_default_coding(""); const ASN_Tag_t UE__IsServed_pLMNidentity_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UE__IsServed_pLMNidentity_ber_ = { 1u, UE__IsServed_pLMNidentity_tag_ }; // No XER for UE__IsServed_pLMNidentity const int UE__IsServed_pLMNidentity_oer_ext_arr_[0] = {}; const int UE__IsServed_pLMNidentity_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__IsServed_pLMNidentity_oer_ = { -1, TRUE, 3, FALSE, 0, 0, UE__IsServed_pLMNidentity_oer_ext_arr_, 0, UE__IsServed_pLMNidentity_oer_p_}; const TTCN_Typedescriptor_t UE__IsServed_pLMNidentity_descr_ = { "@RANAP-IEs.UE-IsServed.pLMNidentity", &UE__IsServed_pLMNidentity_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, NULL, &OCTETSTRING_json_, &UE__IsServed_pLMNidentity_oer_, &PLMNidentity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__IsServed_pLMNidentity_default_coding(""); // No XER for UE__IsServed const TTCN_JSONdescriptor_t UE__IsServed_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UE__IsServed_oer_ext_arr_[0] = {}; const int UE__IsServed_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t UE__IsServed_oer_ = { -1, TRUE, -1, TRUE, 3, 0, UE__IsServed_oer_ext_arr_, 3, UE__IsServed_oer_p_}; static const Per_Constraint UE__IsServed_per_cons_; const ASN_PERdescriptor_t UE__IsServed_per_ = { &UE__IsServed_per_cons_ }; const TTCN_Typedescriptor_t UE__IsServed_descr_ = { "@RANAP-IEs.UE-IsServed", &SEQUENCE_ber_, NULL, NULL, NULL, &UE__IsServed_json_, &UE__IsServed_oer_, &UE__IsServed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst89", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst89.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst89.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst89.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst89.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst89", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst89.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst89_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_default_coding(""); const ASN_Tag_t UE__IsServed_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UE__IsServed_iE__Extensions_ber_ = { 1u, UE__IsServed_iE__Extensions_tag_ }; // No XER for UE__IsServed_iE__Extensions const int UE__IsServed_iE__Extensions_oer_ext_arr_[0] = {}; const int UE__IsServed_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__IsServed_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UE__IsServed_iE__Extensions_oer_ext_arr_, 0, UE__IsServed_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t UE__IsServed_iE__Extensions_descr_ = { "@RANAP-IEs.UE-IsServed.iE-Extensions", &UE__IsServed_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_json_, &UE__IsServed_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst89_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__IsServed_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING UE__IsServed_default_coding(""); // No XER for UE__Usage__Type const int UE__Usage__Type_oer_ext_arr_[0] = {}; const int UE__Usage__Type_oer_p_[0] = {}; const TTCN_OERdescriptor_t UE__Usage__Type_oer_ = { 1, FALSE, -1, FALSE, 0, 0, UE__Usage__Type_oer_ext_arr_, 0, UE__Usage__Type_oer_p_}; static Per_Integer_Constraint UE__Usage__Type_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t UE__Usage__Type_per_ = { &UE__Usage__Type_per_cons_ }; const TTCN_Typedescriptor_t UE__Usage__Type_descr_ = { "@RANAP-IEs.UE-Usage-Type", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UE__Usage__Type_oer_, &UE__Usage__Type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UE__Usage__Type_default_coding(""); // No XER for UERegistrationQueryResult const TTCN_JSONdescriptor_t UERegistrationQueryResult_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UERegistrationQueryResult_oer_ext_arr_[0] = {}; const int UERegistrationQueryResult_oer_p_[0] = {}; const TTCN_OERdescriptor_t UERegistrationQueryResult_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UERegistrationQueryResult_oer_ext_arr_, 0, UERegistrationQueryResult_oer_p_}; static const Per_Constraint UERegistrationQueryResult_per_cons_; const ASN_PERdescriptor_t UERegistrationQueryResult_per_ = { &UERegistrationQueryResult_per_cons_ }; const TTCN_Typedescriptor_t UERegistrationQueryResult_descr_ = { "@RANAP-IEs.UERegistrationQueryResult", &CHOICE_ber_, NULL, NULL, NULL, &UERegistrationQueryResult_json_, &UERegistrationQueryResult_oer_, &UERegistrationQueryResult_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t UERegistrationQueryResult_uE__IsServed_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UERegistrationQueryResult_uE__IsServed_ber_ = { 1u, UERegistrationQueryResult_uE__IsServed_tag_ }; // No XER for UERegistrationQueryResult_uE__IsServed const int UERegistrationQueryResult_uE__IsServed_oer_ext_arr_[0] = {}; const int UERegistrationQueryResult_uE__IsServed_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t UERegistrationQueryResult_uE__IsServed_oer_ = { -1, TRUE, -1, TRUE, 3, 0, UERegistrationQueryResult_uE__IsServed_oer_ext_arr_, 3, UERegistrationQueryResult_uE__IsServed_oer_p_}; const TTCN_Typedescriptor_t UERegistrationQueryResult_uE__IsServed_descr_ = { "@RANAP-IEs.UERegistrationQueryResult.uE-IsServed", &UERegistrationQueryResult_uE__IsServed_ber_, NULL, NULL, NULL, &UE__IsServed_json_, &UERegistrationQueryResult_uE__IsServed_oer_, &UE__IsServed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UERegistrationQueryResult_uE__IsServed_default_coding(""); const ASN_Tag_t UERegistrationQueryResult_uE__IsNotServed_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UERegistrationQueryResult_uE__IsNotServed_ber_ = { 1u, UERegistrationQueryResult_uE__IsNotServed_tag_ }; // No XER for UERegistrationQueryResult_uE__IsNotServed const int UERegistrationQueryResult_uE__IsNotServed_oer_ext_arr_[0] = {}; const int UERegistrationQueryResult_uE__IsNotServed_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t UERegistrationQueryResult_uE__IsNotServed_oer_ = { -1, TRUE, -1, TRUE, 2, 0, UERegistrationQueryResult_uE__IsNotServed_oer_ext_arr_, 2, UERegistrationQueryResult_uE__IsNotServed_oer_p_}; const TTCN_Typedescriptor_t UERegistrationQueryResult_uE__IsNotServed_descr_ = { "@RANAP-IEs.UERegistrationQueryResult.uE-IsNotServed", &UERegistrationQueryResult_uE__IsNotServed_ber_, NULL, NULL, NULL, &UE__IsNotServed_json_, &UERegistrationQueryResult_uE__IsNotServed_oer_, &UE__IsNotServed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UERegistrationQueryResult_uE__IsNotServed_default_coding(""); UNIVERSAL_CHARSTRING UERegistrationQueryResult_default_coding(""); // No XER for UESBI__Iu const TTCN_JSONdescriptor_t UESBI__Iu_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UESBI__Iu_oer_ext_arr_[0] = {}; const int UESBI__Iu_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t UESBI__Iu_oer_ = { -1, TRUE, -1, TRUE, 3, 0, UESBI__Iu_oer_ext_arr_, 3, UESBI__Iu_oer_p_}; static const Per_Constraint UESBI__Iu_per_cons_; const ASN_PERdescriptor_t UESBI__Iu_per_ = { &UESBI__Iu_per_cons_ }; const TTCN_Typedescriptor_t UESBI__Iu_descr_ = { "@RANAP-IEs.UESBI-Iu", &SEQUENCE_ber_, NULL, NULL, NULL, &UESBI__Iu_json_, &UESBI__Iu_oer_, &UESBI__Iu_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for UESBI__IuA const int UESBI__IuA_oer_ext_arr_[0] = {}; const int UESBI__IuA_oer_p_[0] = {}; const TTCN_OERdescriptor_t UESBI__IuA_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UESBI__IuA_oer_ext_arr_, 0, UESBI__IuA_oer_p_}; static Per_Integer_Constraint UESBI__IuA_size_per_cons_(new INTEGER(1), new INTEGER(128), FALSE); static Per_BitString_Constraint UESBI__IuA_per_cons_(FALSE, &UESBI__IuA_size_per_cons_); const ASN_PERdescriptor_t UESBI__IuA_per_ = { &UESBI__IuA_per_cons_ }; const TTCN_Typedescriptor_t UESBI__IuA_descr_ = { "@RANAP-IEs.UESBI-IuA", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UESBI__IuA_oer_, &UESBI__IuA_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UESBI__IuA_default_coding(""); const ASN_Tag_t UESBI__Iu_uESBI__IuA_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t UESBI__Iu_uESBI__IuA_ber_ = { 1u, UESBI__Iu_uESBI__IuA_tag_ }; // No XER for UESBI__Iu_uESBI__IuA const int UESBI__Iu_uESBI__IuA_oer_ext_arr_[0] = {}; const int UESBI__Iu_uESBI__IuA_oer_p_[0] = {}; const TTCN_OERdescriptor_t UESBI__Iu_uESBI__IuA_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UESBI__Iu_uESBI__IuA_oer_ext_arr_, 0, UESBI__Iu_uESBI__IuA_oer_p_}; const TTCN_Typedescriptor_t UESBI__Iu_uESBI__IuA_descr_ = { "@RANAP-IEs.UESBI-Iu.uESBI-IuA", &UESBI__Iu_uESBI__IuA_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UESBI__Iu_uESBI__IuA_oer_, &UESBI__IuA_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UESBI__Iu_uESBI__IuA_default_coding(""); // No XER for UESBI__IuB const int UESBI__IuB_oer_ext_arr_[0] = {}; const int UESBI__IuB_oer_p_[0] = {}; const TTCN_OERdescriptor_t UESBI__IuB_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UESBI__IuB_oer_ext_arr_, 0, UESBI__IuB_oer_p_}; static Per_Integer_Constraint UESBI__IuB_size_per_cons_(new INTEGER(1), new INTEGER(128), FALSE); static Per_BitString_Constraint UESBI__IuB_per_cons_(FALSE, &UESBI__IuB_size_per_cons_); const ASN_PERdescriptor_t UESBI__IuB_per_ = { &UESBI__IuB_per_cons_ }; const TTCN_Typedescriptor_t UESBI__IuB_descr_ = { "@RANAP-IEs.UESBI-IuB", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UESBI__IuB_oer_, &UESBI__IuB_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UESBI__IuB_default_coding(""); const ASN_Tag_t UESBI__Iu_uESBI__IuB_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t UESBI__Iu_uESBI__IuB_ber_ = { 1u, UESBI__Iu_uESBI__IuB_tag_ }; // No XER for UESBI__Iu_uESBI__IuB const int UESBI__Iu_uESBI__IuB_oer_ext_arr_[0] = {}; const int UESBI__Iu_uESBI__IuB_oer_p_[0] = {}; const TTCN_OERdescriptor_t UESBI__Iu_uESBI__IuB_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UESBI__Iu_uESBI__IuB_oer_ext_arr_, 0, UESBI__Iu_uESBI__IuB_oer_p_}; const TTCN_Typedescriptor_t UESBI__Iu_uESBI__IuB_descr_ = { "@RANAP-IEs.UESBI-Iu.uESBI-IuB", &UESBI__Iu_uESBI__IuB_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UESBI__Iu_uESBI__IuB_oer_, &UESBI__IuB_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UESBI__Iu_uESBI__IuB_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst90", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst90.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst90.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst90.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst90.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst90", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst90.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst90_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_default_coding(""); const ASN_Tag_t UESBI__Iu_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t UESBI__Iu_iE__Extensions_ber_ = { 1u, UESBI__Iu_iE__Extensions_tag_ }; // No XER for UESBI__Iu_iE__Extensions const int UESBI__Iu_iE__Extensions_oer_ext_arr_[0] = {}; const int UESBI__Iu_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UESBI__Iu_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UESBI__Iu_iE__Extensions_oer_ext_arr_, 0, UESBI__Iu_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t UESBI__Iu_iE__Extensions_descr_ = { "@RANAP-IEs.UESBI-Iu.iE-Extensions", &UESBI__Iu_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_json_, &UESBI__Iu_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst90_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UESBI__Iu_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING UESBI__Iu_default_coding(""); // No XER for UL__GTP__PDU__SequenceNumber const int UL__GTP__PDU__SequenceNumber_oer_ext_arr_[0] = {}; const int UL__GTP__PDU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t UL__GTP__PDU__SequenceNumber_oer_ = { 2, FALSE, -1, FALSE, 0, 0, UL__GTP__PDU__SequenceNumber_oer_ext_arr_, 0, UL__GTP__PDU__SequenceNumber_oer_p_}; static Per_Integer_Constraint UL__GTP__PDU__SequenceNumber_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t UL__GTP__PDU__SequenceNumber_per_ = { &UL__GTP__PDU__SequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t UL__GTP__PDU__SequenceNumber_descr_ = { "@RANAP-IEs.UL-GTP-PDU-SequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UL__GTP__PDU__SequenceNumber_oer_, &UL__GTP__PDU__SequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UL__GTP__PDU__SequenceNumber_default_coding(""); // No XER for UL__N__PDU__SequenceNumber const int UL__N__PDU__SequenceNumber_oer_ext_arr_[0] = {}; const int UL__N__PDU__SequenceNumber_oer_p_[0] = {}; const TTCN_OERdescriptor_t UL__N__PDU__SequenceNumber_oer_ = { 2, FALSE, -1, FALSE, 0, 0, UL__N__PDU__SequenceNumber_oer_ext_arr_, 0, UL__N__PDU__SequenceNumber_oer_p_}; static Per_Integer_Constraint UL__N__PDU__SequenceNumber_per_cons_(new INTEGER(0), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t UL__N__PDU__SequenceNumber_per_ = { &UL__N__PDU__SequenceNumber_per_cons_ }; const TTCN_Typedescriptor_t UL__N__PDU__SequenceNumber_descr_ = { "@RANAP-IEs.UL-N-PDU-SequenceNumber", &INTEGER_ber_, NULL, NULL, NULL, &INTEGER_json_, &UL__N__PDU__SequenceNumber_oer_, &UL__N__PDU__SequenceNumber_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UL__N__PDU__SequenceNumber_default_coding(""); // No XER for UP__ModeVersions const int UP__ModeVersions_oer_ext_arr_[0] = {}; const int UP__ModeVersions_oer_p_[0] = {}; const TTCN_OERdescriptor_t UP__ModeVersions_oer_ = { -1, TRUE, 16, FALSE, 0, 0, UP__ModeVersions_oer_ext_arr_, 0, UP__ModeVersions_oer_p_}; static Per_Integer_Constraint UP__ModeVersions_size_per_cons_(Per_Integer_Constraint::PER_INT_SINGLE_VALUE, new INTEGER(16), FALSE); static Per_BitString_Constraint UP__ModeVersions_per_cons_(FALSE, &UP__ModeVersions_size_per_cons_); const ASN_PERdescriptor_t UP__ModeVersions_per_ = { &UP__ModeVersions_per_cons_ }; const TTCN_Typedescriptor_t UP__ModeVersions_descr_ = { "@RANAP-IEs.UP-ModeVersions", &BITSTRING_ber_, NULL, NULL, NULL, &BITSTRING_json_, &UP__ModeVersions_oer_, &UP__ModeVersions_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UP__ModeVersions_default_coding(""); // No XER for UserPlaneMode const TTCN_JSONdescriptor_t UserPlaneMode_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int UserPlaneMode_oer_ext_arr_[0] = {}; const int UserPlaneMode_oer_p_[0] = {}; const TTCN_OERdescriptor_t UserPlaneMode_oer_ = { -1, TRUE, -1, FALSE, 0, 0, UserPlaneMode_oer_ext_arr_, 0, UserPlaneMode_oer_p_}; static const Per_Constraint UserPlaneMode_per_cons_; const ASN_PERdescriptor_t UserPlaneMode_per_ = { &UserPlaneMode_per_cons_ }; const TTCN_Typedescriptor_t UserPlaneMode_descr_ = { "@RANAP-IEs.UserPlaneMode", &ENUMERATED_ber_, NULL, NULL, NULL, &UserPlaneMode_json_, &UserPlaneMode_oer_, &UserPlaneMode_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING UserPlaneMode_default_coding(""); // No XER for VelocityEstimate const TTCN_JSONdescriptor_t VelocityEstimate_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int VelocityEstimate_oer_ext_arr_[0] = {}; const int VelocityEstimate_oer_p_[0] = {}; const TTCN_OERdescriptor_t VelocityEstimate_oer_ = { -1, TRUE, -1, TRUE, 4, 0, VelocityEstimate_oer_ext_arr_, 0, VelocityEstimate_oer_p_}; static const Per_Constraint VelocityEstimate_per_cons_; const ASN_PERdescriptor_t VelocityEstimate_per_ = { &VelocityEstimate_per_cons_ }; const TTCN_Typedescriptor_t VelocityEstimate_descr_ = { "@RANAP-IEs.VelocityEstimate", &CHOICE_ber_, NULL, NULL, NULL, &VelocityEstimate_json_, &VelocityEstimate_oer_, &VelocityEstimate_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t HorizontalSpeedAndBearing_bearing_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t HorizontalSpeedAndBearing_bearing_ber_ = { 1u, HorizontalSpeedAndBearing_bearing_tag_ }; // No XER for HorizontalSpeedAndBearing_bearing const int HorizontalSpeedAndBearing_bearing_oer_ext_arr_[0] = {}; const int HorizontalSpeedAndBearing_bearing_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalSpeedAndBearing_bearing_oer_ = { 2, FALSE, -1, FALSE, 0, 0, HorizontalSpeedAndBearing_bearing_oer_ext_arr_, 0, HorizontalSpeedAndBearing_bearing_oer_p_}; static Per_Integer_Constraint HorizontalSpeedAndBearing_bearing_per_cons_(new INTEGER(0), new INTEGER(359), FALSE); const ASN_PERdescriptor_t HorizontalSpeedAndBearing_bearing_per_ = { &HorizontalSpeedAndBearing_bearing_per_cons_ }; const TTCN_Typedescriptor_t HorizontalSpeedAndBearing_bearing_descr_ = { "@RANAP-IEs.HorizontalSpeedAndBearing.bearing", &HorizontalSpeedAndBearing_bearing_ber_, NULL, NULL, NULL, &INTEGER_json_, &HorizontalSpeedAndBearing_bearing_oer_, &HorizontalSpeedAndBearing_bearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalSpeedAndBearing_bearing_default_coding(""); const ASN_Tag_t HorizontalSpeedAndBearing_horizontalSpeed_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t HorizontalSpeedAndBearing_horizontalSpeed_ber_ = { 1u, HorizontalSpeedAndBearing_horizontalSpeed_tag_ }; // No XER for HorizontalSpeedAndBearing_horizontalSpeed const int HorizontalSpeedAndBearing_horizontalSpeed_oer_ext_arr_[0] = {}; const int HorizontalSpeedAndBearing_horizontalSpeed_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalSpeedAndBearing_horizontalSpeed_oer_ = { 2, FALSE, -1, FALSE, 0, 0, HorizontalSpeedAndBearing_horizontalSpeed_oer_ext_arr_, 0, HorizontalSpeedAndBearing_horizontalSpeed_oer_p_}; static Per_Integer_Constraint HorizontalSpeedAndBearing_horizontalSpeed_per_cons_(new INTEGER(0), new INTEGER(2047), FALSE); const ASN_PERdescriptor_t HorizontalSpeedAndBearing_horizontalSpeed_per_ = { &HorizontalSpeedAndBearing_horizontalSpeed_per_cons_ }; const TTCN_Typedescriptor_t HorizontalSpeedAndBearing_horizontalSpeed_descr_ = { "@RANAP-IEs.HorizontalSpeedAndBearing.horizontalSpeed", &HorizontalSpeedAndBearing_horizontalSpeed_ber_, NULL, NULL, NULL, &INTEGER_json_, &HorizontalSpeedAndBearing_horizontalSpeed_oer_, &HorizontalSpeedAndBearing_horizontalSpeed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalSpeedAndBearing_horizontalSpeed_default_coding(""); // No XER for HorizontalSpeedAndBearing const TTCN_JSONdescriptor_t HorizontalSpeedAndBearing_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HorizontalSpeedAndBearing_oer_ext_arr_[0] = {}; const int HorizontalSpeedAndBearing_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalSpeedAndBearing_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalSpeedAndBearing_oer_ext_arr_, 2, HorizontalSpeedAndBearing_oer_p_}; static const Per_Constraint HorizontalSpeedAndBearing_per_cons_; const ASN_PERdescriptor_t HorizontalSpeedAndBearing_per_ = { &HorizontalSpeedAndBearing_per_cons_ }; const TTCN_Typedescriptor_t HorizontalSpeedAndBearing_descr_ = { "@RANAP-IEs.HorizontalSpeedAndBearing", &SEQUENCE_ber_, NULL, NULL, NULL, &HorizontalSpeedAndBearing_json_, &HorizontalSpeedAndBearing_oer_, &HorizontalSpeedAndBearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalSpeedAndBearing_default_coding(""); const ASN_Tag_t HorizontalVelocity_horizontalSpeedAndBearing_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t HorizontalVelocity_horizontalSpeedAndBearing_ber_ = { 1u, HorizontalVelocity_horizontalSpeedAndBearing_tag_ }; // No XER for HorizontalVelocity_horizontalSpeedAndBearing const int HorizontalVelocity_horizontalSpeedAndBearing_oer_ext_arr_[0] = {}; const int HorizontalVelocity_horizontalSpeedAndBearing_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalVelocity_horizontalSpeedAndBearing_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalVelocity_horizontalSpeedAndBearing_oer_ext_arr_, 2, HorizontalVelocity_horizontalSpeedAndBearing_oer_p_}; const TTCN_Typedescriptor_t HorizontalVelocity_horizontalSpeedAndBearing_descr_ = { "@RANAP-IEs.HorizontalVelocity.horizontalSpeedAndBearing", &HorizontalVelocity_horizontalSpeedAndBearing_ber_, NULL, NULL, NULL, &HorizontalSpeedAndBearing_json_, &HorizontalVelocity_horizontalSpeedAndBearing_oer_, &HorizontalSpeedAndBearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalVelocity_horizontalSpeedAndBearing_default_coding(""); // No XER for HorizontalVelocity const TTCN_JSONdescriptor_t HorizontalVelocity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HorizontalVelocity_oer_ext_arr_[0] = {}; const int HorizontalVelocity_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalVelocity_oer_ = { -1, TRUE, -1, TRUE, 2, 0, HorizontalVelocity_oer_ext_arr_, 2, HorizontalVelocity_oer_p_}; static const Per_Constraint HorizontalVelocity_per_cons_; const ASN_PERdescriptor_t HorizontalVelocity_per_ = { &HorizontalVelocity_per_cons_ }; const TTCN_Typedescriptor_t HorizontalVelocity_descr_ = { "@RANAP-IEs.HorizontalVelocity", &SEQUENCE_ber_, NULL, NULL, NULL, &HorizontalVelocity_json_, &HorizontalVelocity_oer_, &HorizontalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst91", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst91.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst91.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst91.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst91.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst91", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst91.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst91_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_default_coding(""); const ASN_Tag_t HorizontalVelocity_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t HorizontalVelocity_iE__Extensions_ber_ = { 1u, HorizontalVelocity_iE__Extensions_tag_ }; // No XER for HorizontalVelocity_iE__Extensions const int HorizontalVelocity_iE__Extensions_oer_ext_arr_[0] = {}; const int HorizontalVelocity_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalVelocity_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalVelocity_iE__Extensions_oer_ext_arr_, 0, HorizontalVelocity_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t HorizontalVelocity_iE__Extensions_descr_ = { "@RANAP-IEs.HorizontalVelocity.iE-Extensions", &HorizontalVelocity_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_json_, &HorizontalVelocity_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst91_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalVelocity_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING HorizontalVelocity_default_coding(""); const ASN_Tag_t VelocityEstimate_horizontalVelocity_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t VelocityEstimate_horizontalVelocity_ber_ = { 1u, VelocityEstimate_horizontalVelocity_tag_ }; // No XER for VelocityEstimate_horizontalVelocity const int VelocityEstimate_horizontalVelocity_oer_ext_arr_[0] = {}; const int VelocityEstimate_horizontalVelocity_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t VelocityEstimate_horizontalVelocity_oer_ = { -1, TRUE, -1, TRUE, 2, 0, VelocityEstimate_horizontalVelocity_oer_ext_arr_, 2, VelocityEstimate_horizontalVelocity_oer_p_}; const TTCN_Typedescriptor_t VelocityEstimate_horizontalVelocity_descr_ = { "@RANAP-IEs.VelocityEstimate.horizontalVelocity", &VelocityEstimate_horizontalVelocity_ber_, NULL, NULL, NULL, &HorizontalVelocity_json_, &VelocityEstimate_horizontalVelocity_oer_, &HorizontalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VelocityEstimate_horizontalVelocity_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_ber_ = { 1u, HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_tag_ }; // No XER for HorizontalWithVerticalVelocity_horizontalSpeedAndBearing const int HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_ext_arr_, 2, HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocity.horizontalSpeedAndBearing", &HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_ber_, NULL, NULL, NULL, &HorizontalSpeedAndBearing_json_, &HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_oer_, &HorizontalSpeedAndBearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocity_horizontalSpeedAndBearing_default_coding(""); const ASN_Tag_t VerticalVelocity_veritcalSpeed_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t VerticalVelocity_veritcalSpeed_ber_ = { 1u, VerticalVelocity_veritcalSpeed_tag_ }; // No XER for VerticalVelocity_veritcalSpeed const int VerticalVelocity_veritcalSpeed_oer_ext_arr_[0] = {}; const int VerticalVelocity_veritcalSpeed_oer_p_[0] = {}; const TTCN_OERdescriptor_t VerticalVelocity_veritcalSpeed_oer_ = { 1, FALSE, -1, FALSE, 0, 0, VerticalVelocity_veritcalSpeed_oer_ext_arr_, 0, VerticalVelocity_veritcalSpeed_oer_p_}; static Per_Integer_Constraint VerticalVelocity_veritcalSpeed_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t VerticalVelocity_veritcalSpeed_per_ = { &VerticalVelocity_veritcalSpeed_per_cons_ }; const TTCN_Typedescriptor_t VerticalVelocity_veritcalSpeed_descr_ = { "@RANAP-IEs.VerticalVelocity.veritcalSpeed", &VerticalVelocity_veritcalSpeed_ber_, NULL, NULL, NULL, &INTEGER_json_, &VerticalVelocity_veritcalSpeed_oer_, &VerticalVelocity_veritcalSpeed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VerticalVelocity_veritcalSpeed_default_coding(""); // No XER for VerticalSpeedDirection const TTCN_JSONdescriptor_t VerticalSpeedDirection_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int VerticalSpeedDirection_oer_ext_arr_[0] = {}; const int VerticalSpeedDirection_oer_p_[0] = {}; const TTCN_OERdescriptor_t VerticalSpeedDirection_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VerticalSpeedDirection_oer_ext_arr_, 0, VerticalSpeedDirection_oer_p_}; static const Per_Constraint VerticalSpeedDirection_per_cons_; const ASN_PERdescriptor_t VerticalSpeedDirection_per_ = { &VerticalSpeedDirection_per_cons_ }; const TTCN_Typedescriptor_t VerticalSpeedDirection_descr_ = { "@RANAP-IEs.VerticalSpeedDirection", &ENUMERATED_ber_, NULL, NULL, NULL, &VerticalSpeedDirection_json_, &VerticalSpeedDirection_oer_, &VerticalSpeedDirection_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VerticalSpeedDirection_default_coding(""); const ASN_Tag_t VerticalVelocity_veritcalSpeedDirection_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t VerticalVelocity_veritcalSpeedDirection_ber_ = { 1u, VerticalVelocity_veritcalSpeedDirection_tag_ }; // No XER for VerticalVelocity_veritcalSpeedDirection const int VerticalVelocity_veritcalSpeedDirection_oer_ext_arr_[0] = {}; const int VerticalVelocity_veritcalSpeedDirection_oer_p_[0] = {}; const TTCN_OERdescriptor_t VerticalVelocity_veritcalSpeedDirection_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VerticalVelocity_veritcalSpeedDirection_oer_ext_arr_, 0, VerticalVelocity_veritcalSpeedDirection_oer_p_}; const TTCN_Typedescriptor_t VerticalVelocity_veritcalSpeedDirection_descr_ = { "@RANAP-IEs.VerticalVelocity.veritcalSpeedDirection", &VerticalVelocity_veritcalSpeedDirection_ber_, NULL, NULL, NULL, &VerticalSpeedDirection_json_, &VerticalVelocity_veritcalSpeedDirection_oer_, &VerticalSpeedDirection_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VerticalVelocity_veritcalSpeedDirection_default_coding(""); // No XER for VerticalVelocity const TTCN_JSONdescriptor_t VerticalVelocity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int VerticalVelocity_oer_ext_arr_[0] = {}; const int VerticalVelocity_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t VerticalVelocity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VerticalVelocity_oer_ext_arr_, 2, VerticalVelocity_oer_p_}; static const Per_Constraint VerticalVelocity_per_cons_; const ASN_PERdescriptor_t VerticalVelocity_per_ = { &VerticalVelocity_per_cons_ }; const TTCN_Typedescriptor_t VerticalVelocity_descr_ = { "@RANAP-IEs.VerticalVelocity", &SEQUENCE_ber_, NULL, NULL, NULL, &VerticalVelocity_json_, &VerticalVelocity_oer_, &VerticalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VerticalVelocity_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocity_veritcalVelocity_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocity_veritcalVelocity_ber_ = { 1u, HorizontalWithVerticalVelocity_veritcalVelocity_tag_ }; // No XER for HorizontalWithVerticalVelocity_veritcalVelocity const int HorizontalWithVerticalVelocity_veritcalVelocity_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocity_veritcalVelocity_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocity_veritcalVelocity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocity_veritcalVelocity_oer_ext_arr_, 2, HorizontalWithVerticalVelocity_veritcalVelocity_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocity_veritcalVelocity_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocity.veritcalVelocity", &HorizontalWithVerticalVelocity_veritcalVelocity_ber_, NULL, NULL, NULL, &VerticalVelocity_json_, &HorizontalWithVerticalVelocity_veritcalVelocity_oer_, &VerticalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocity_veritcalVelocity_default_coding(""); // No XER for HorizontalWithVerticalVelocity const TTCN_JSONdescriptor_t HorizontalWithVerticalVelocity_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HorizontalWithVerticalVelocity_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocity_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocity_oer_ = { -1, TRUE, -1, TRUE, 3, 0, HorizontalWithVerticalVelocity_oer_ext_arr_, 3, HorizontalWithVerticalVelocity_oer_p_}; static const Per_Constraint HorizontalWithVerticalVelocity_per_cons_; const ASN_PERdescriptor_t HorizontalWithVerticalVelocity_per_ = { &HorizontalWithVerticalVelocity_per_cons_ }; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocity_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocity", &SEQUENCE_ber_, NULL, NULL, NULL, &HorizontalWithVerticalVelocity_json_, &HorizontalWithVerticalVelocity_oer_, &HorizontalWithVerticalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst92", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst92.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst92.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst92.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst92.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst92", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst92.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst92_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocity_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocity_iE__Extensions_ber_ = { 1u, HorizontalWithVerticalVelocity_iE__Extensions_tag_ }; // No XER for HorizontalWithVerticalVelocity_iE__Extensions const int HorizontalWithVerticalVelocity_iE__Extensions_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocity_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocity_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocity_iE__Extensions_oer_ext_arr_, 0, HorizontalWithVerticalVelocity_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocity_iE__Extensions_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocity.iE-Extensions", &HorizontalWithVerticalVelocity_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_json_, &HorizontalWithVerticalVelocity_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst92_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocity_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocity_default_coding(""); const ASN_Tag_t VelocityEstimate_horizontalWithVerticalVelocity_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t VelocityEstimate_horizontalWithVerticalVelocity_ber_ = { 1u, VelocityEstimate_horizontalWithVerticalVelocity_tag_ }; // No XER for VelocityEstimate_horizontalWithVerticalVelocity const int VelocityEstimate_horizontalWithVerticalVelocity_oer_ext_arr_[0] = {}; const int VelocityEstimate_horizontalWithVerticalVelocity_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t VelocityEstimate_horizontalWithVerticalVelocity_oer_ = { -1, TRUE, -1, TRUE, 3, 0, VelocityEstimate_horizontalWithVerticalVelocity_oer_ext_arr_, 3, VelocityEstimate_horizontalWithVerticalVelocity_oer_p_}; const TTCN_Typedescriptor_t VelocityEstimate_horizontalWithVerticalVelocity_descr_ = { "@RANAP-IEs.VelocityEstimate.horizontalWithVerticalVelocity", &VelocityEstimate_horizontalWithVerticalVelocity_ber_, NULL, NULL, NULL, &HorizontalWithVerticalVelocity_json_, &VelocityEstimate_horizontalWithVerticalVelocity_oer_, &HorizontalWithVerticalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VelocityEstimate_horizontalWithVerticalVelocity_default_coding(""); const ASN_Tag_t HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_ber_ = { 1u, HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_tag_ }; // No XER for HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing const int HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_ext_arr_[0] = {}; const int HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_ext_arr_, 2, HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_p_}; const TTCN_Typedescriptor_t HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_descr_ = { "@RANAP-IEs.HorizontalVelocityWithUncertainty.horizontalSpeedAndBearing", &HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_ber_, NULL, NULL, NULL, &HorizontalSpeedAndBearing_json_, &HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_oer_, &HorizontalSpeedAndBearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalVelocityWithUncertainty_horizontalSpeedAndBearing_default_coding(""); const ASN_Tag_t HorizontalVelocityWithUncertainty_uncertaintySpeed_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t HorizontalVelocityWithUncertainty_uncertaintySpeed_ber_ = { 1u, HorizontalVelocityWithUncertainty_uncertaintySpeed_tag_ }; // No XER for HorizontalVelocityWithUncertainty_uncertaintySpeed const int HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_ext_arr_[0] = {}; const int HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_ = { 1, FALSE, -1, FALSE, 0, 0, HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_ext_arr_, 0, HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_p_}; static Per_Integer_Constraint HorizontalVelocityWithUncertainty_uncertaintySpeed_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t HorizontalVelocityWithUncertainty_uncertaintySpeed_per_ = { &HorizontalVelocityWithUncertainty_uncertaintySpeed_per_cons_ }; const TTCN_Typedescriptor_t HorizontalVelocityWithUncertainty_uncertaintySpeed_descr_ = { "@RANAP-IEs.HorizontalVelocityWithUncertainty.uncertaintySpeed", &HorizontalVelocityWithUncertainty_uncertaintySpeed_ber_, NULL, NULL, NULL, &INTEGER_json_, &HorizontalVelocityWithUncertainty_uncertaintySpeed_oer_, &HorizontalVelocityWithUncertainty_uncertaintySpeed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalVelocityWithUncertainty_uncertaintySpeed_default_coding(""); // No XER for HorizontalVelocityWithUncertainty const TTCN_JSONdescriptor_t HorizontalVelocityWithUncertainty_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HorizontalVelocityWithUncertainty_oer_ext_arr_[0] = {}; const int HorizontalVelocityWithUncertainty_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t HorizontalVelocityWithUncertainty_oer_ = { -1, TRUE, -1, TRUE, 3, 0, HorizontalVelocityWithUncertainty_oer_ext_arr_, 3, HorizontalVelocityWithUncertainty_oer_p_}; static const Per_Constraint HorizontalVelocityWithUncertainty_per_cons_; const ASN_PERdescriptor_t HorizontalVelocityWithUncertainty_per_ = { &HorizontalVelocityWithUncertainty_per_cons_ }; const TTCN_Typedescriptor_t HorizontalVelocityWithUncertainty_descr_ = { "@RANAP-IEs.HorizontalVelocityWithUncertainty", &SEQUENCE_ber_, NULL, NULL, NULL, &HorizontalVelocityWithUncertainty_json_, &HorizontalVelocityWithUncertainty_oer_, &HorizontalVelocityWithUncertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst93", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst93.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst93.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst93.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst93.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst93", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst93.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst93_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_default_coding(""); const ASN_Tag_t HorizontalVelocityWithUncertainty_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t HorizontalVelocityWithUncertainty_iE__Extensions_ber_ = { 1u, HorizontalVelocityWithUncertainty_iE__Extensions_tag_ }; // No XER for HorizontalVelocityWithUncertainty_iE__Extensions const int HorizontalVelocityWithUncertainty_iE__Extensions_oer_ext_arr_[0] = {}; const int HorizontalVelocityWithUncertainty_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalVelocityWithUncertainty_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalVelocityWithUncertainty_iE__Extensions_oer_ext_arr_, 0, HorizontalVelocityWithUncertainty_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t HorizontalVelocityWithUncertainty_iE__Extensions_descr_ = { "@RANAP-IEs.HorizontalVelocityWithUncertainty.iE-Extensions", &HorizontalVelocityWithUncertainty_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_json_, &HorizontalVelocityWithUncertainty_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst93_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalVelocityWithUncertainty_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING HorizontalVelocityWithUncertainty_default_coding(""); const ASN_Tag_t VelocityEstimate_horizontalVelocityWithUncertainty_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t VelocityEstimate_horizontalVelocityWithUncertainty_ber_ = { 1u, VelocityEstimate_horizontalVelocityWithUncertainty_tag_ }; // No XER for VelocityEstimate_horizontalVelocityWithUncertainty const int VelocityEstimate_horizontalVelocityWithUncertainty_oer_ext_arr_[0] = {}; const int VelocityEstimate_horizontalVelocityWithUncertainty_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t VelocityEstimate_horizontalVelocityWithUncertainty_oer_ = { -1, TRUE, -1, TRUE, 3, 0, VelocityEstimate_horizontalVelocityWithUncertainty_oer_ext_arr_, 3, VelocityEstimate_horizontalVelocityWithUncertainty_oer_p_}; const TTCN_Typedescriptor_t VelocityEstimate_horizontalVelocityWithUncertainty_descr_ = { "@RANAP-IEs.VelocityEstimate.horizontalVelocityWithUncertainty", &VelocityEstimate_horizontalVelocityWithUncertainty_ber_, NULL, NULL, NULL, &HorizontalVelocityWithUncertainty_json_, &VelocityEstimate_horizontalVelocityWithUncertainty_oer_, &HorizontalVelocityWithUncertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VelocityEstimate_horizontalVelocityWithUncertainty_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_ber_ = { 1u, HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_tag_ }; // No XER for HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing const int HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_ext_arr_, 2, HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty.horizontalSpeedAndBearing", &HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_ber_, NULL, NULL, NULL, &HorizontalSpeedAndBearing_json_, &HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_oer_, &HorizontalSpeedAndBearing_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_horizontalSpeedAndBearing_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_ber_ = { 1u, HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_tag_ }; // No XER for HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity const int HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_p_[2] = {0, 1}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_ext_arr_, 2, HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty.veritcalVelocity", &HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_ber_, NULL, NULL, NULL, &VerticalVelocity_json_, &HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_oer_, &VerticalVelocity_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_veritcalVelocity_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_ber_ = { 1u, HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_tag_ }; // No XER for HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed const int HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_ = { 1, FALSE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_ext_arr_, 0, HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_p_}; static Per_Integer_Constraint HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_per_ = { &HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_per_cons_ }; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty.horizontalUncertaintySpeed", &HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_ber_, NULL, NULL, NULL, &INTEGER_json_, &HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_oer_, &HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_horizontalUncertaintySpeed_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_ber_ = { 1u, HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_tag_ }; // No XER for HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed const int HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_ = { 1, FALSE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_ext_arr_, 0, HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_p_}; static Per_Integer_Constraint HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_per_cons_(new INTEGER(0), new INTEGER(255), FALSE); const ASN_PERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_per_ = { &HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_per_cons_ }; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty.verticalUncertaintySpeed", &HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_ber_, NULL, NULL, NULL, &INTEGER_json_, &HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_oer_, &HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_verticalUncertaintySpeed_default_coding(""); // No XER for HorizontalWithVerticalVelocityAndUncertainty const TTCN_JSONdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int HorizontalWithVerticalVelocityAndUncertainty_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_oer_ = { -1, TRUE, -1, TRUE, 5, 0, HorizontalWithVerticalVelocityAndUncertainty_oer_ext_arr_, 5, HorizontalWithVerticalVelocityAndUncertainty_oer_p_}; static const Per_Constraint HorizontalWithVerticalVelocityAndUncertainty_per_cons_; const ASN_PERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_per_ = { &HorizontalWithVerticalVelocityAndUncertainty_per_cons_ }; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty", &SEQUENCE_ber_, NULL, NULL, NULL, &HorizontalWithVerticalVelocityAndUncertainty_json_, &HorizontalWithVerticalVelocityAndUncertainty_oer_, &HorizontalWithVerticalVelocityAndUncertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_p_}; static Per_Integer_Constraint _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_per_cons_(new INTEGER(1), new INTEGER(65535), FALSE); const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_per_ = { &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst94", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_tag_[] = { { ASN_TAG_CONT, 0u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_ = { 2, FALSE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst94.id", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_ber_, NULL, NULL, NULL, &INTEGER_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_oer_, &RANAP__CommonDataTypes::ProtocolExtensionID_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_id_default_coding(""); const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_tag_[] = { { ASN_TAG_CONT, 1u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_p_[0] = {}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_ext_arr_, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst94.criticality", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_ber_, NULL, NULL, NULL, &RANAP__CommonDataTypes::Criticality_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_oer_, &RANAP__CommonDataTypes::Criticality_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_criticality_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst94.extensionValue.type", &CHOICE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; const ASN_Tag_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_tag_[] = { { ASN_TAG_CONT, 2u }}; const ASN_BERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_ber_ = { 1u, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_tag_ }; // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst94.extensionValue", &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_type_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_extensionValue_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94 const TTCN_JSONdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_p_}; static const Per_Constraint _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_per_cons_; const ASN_PERdescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_per_ = { &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_per_cons_ }; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_descr_ = { "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst94", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_json_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_default_coding(""); // No XER for _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0 const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_ext_arr_[0] = {}; const int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_p_[3] = {0, 1, 2}; const TTCN_OERdescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_ext_arr_, 3, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_p_}; const TTCN_Typedescriptor_t _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_descr_ = { "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst94.", &SEQUENCE_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_json_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_oer_, &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst94_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_default_coding(""); const ASN_Tag_t HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_tag_[] = { { ASN_TAG_CONT, 4u }}; const ASN_BERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_ber_ = { 1u, HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_tag_ }; // No XER for HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions const int HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_ext_arr_[0] = {}; const int HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_p_[0] = {}; const TTCN_OERdescriptor_t HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_ext_arr_, 0, HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_p_}; const TTCN_Typedescriptor_t HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_descr_ = { "@RANAP-IEs.HorizontalWithVerticalVelocityAndUncertainty.iE-Extensions", &HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_ber_, NULL, NULL, NULL, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_json_, &HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_oer_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_per_, &_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst94_0_descr_, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_iE__Extensions_default_coding(""); UNIVERSAL_CHARSTRING HorizontalWithVerticalVelocityAndUncertainty_default_coding(""); const ASN_Tag_t VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_tag_[] = { { ASN_TAG_CONT, 3u }}; const ASN_BERdescriptor_t VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_ber_ = { 1u, VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_tag_ }; // No XER for VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty const int VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_ext_arr_[0] = {}; const int VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_p_[5] = {0, 1, 2, 3, 4}; const TTCN_OERdescriptor_t VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_ = { -1, TRUE, -1, TRUE, 5, 0, VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_ext_arr_, 5, VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_p_}; const TTCN_Typedescriptor_t VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_descr_ = { "@RANAP-IEs.VelocityEstimate.horizontalWithVeritcalVelocityAndUncertainty", &VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_ber_, NULL, NULL, NULL, &HorizontalWithVerticalVelocityAndUncertainty_json_, &VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_oer_, &HorizontalWithVerticalVelocityAndUncertainty_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VelocityEstimate_horizontalWithVeritcalVelocityAndUncertainty_default_coding(""); UNIVERSAL_CHARSTRING VelocityEstimate_default_coding(""); // No XER for VoiceSupportMatchIndicator const TTCN_JSONdescriptor_t VoiceSupportMatchIndicator_json_ = { FALSE, NULL, FALSE, { JD_UNSET, NULL, NULL }, FALSE, FALSE, FALSE, 0, NULL, FALSE, ESCAPE_AS_SHORT }; const int VoiceSupportMatchIndicator_oer_ext_arr_[0] = {}; const int VoiceSupportMatchIndicator_oer_p_[0] = {}; const TTCN_OERdescriptor_t VoiceSupportMatchIndicator_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VoiceSupportMatchIndicator_oer_ext_arr_, 0, VoiceSupportMatchIndicator_oer_p_}; static const Per_Constraint VoiceSupportMatchIndicator_per_cons_; const ASN_PERdescriptor_t VoiceSupportMatchIndicator_per_ = { &VoiceSupportMatchIndicator_per_cons_ }; const TTCN_Typedescriptor_t VoiceSupportMatchIndicator_descr_ = { "@RANAP-IEs.VoiceSupportMatchIndicator", &ENUMERATED_ber_, NULL, NULL, NULL, &VoiceSupportMatchIndicator_json_, &VoiceSupportMatchIndicator_oer_, &VoiceSupportMatchIndicator_per_, NULL, TTCN_Typedescriptor_t::DONTCARE }; UNIVERSAL_CHARSTRING VoiceSupportMatchIndicator_default_coding(""); TTCN_Module module_object("RANAP-IEs", __DATE__, __TIME__, NULL, pre_init_module); const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_11, current_runtime_version.requires_minor_version_1, current_runtime_version.requires_patch_level_0, current_runtime_version.requires_runtime_1); /* Member functions of C++ classes */ AccuracyFulfilmentIndicator::AccuracyFulfilmentIndicator() { enum_value = UNBOUND_VALUE; } AccuracyFulfilmentIndicator::AccuracyFulfilmentIndicator(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } AccuracyFulfilmentIndicator::AccuracyFulfilmentIndicator(enum_type other_value) { enum_value = other_value; } AccuracyFulfilmentIndicator::AccuracyFulfilmentIndicator(const AccuracyFulfilmentIndicator& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); enum_value = other_value.enum_value; } AccuracyFulfilmentIndicator& AccuracyFulfilmentIndicator::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", other_value); enum_value = (enum_type)other_value; return *this; } AccuracyFulfilmentIndicator& AccuracyFulfilmentIndicator::operator=(enum_type other_value) { enum_value = other_value; return *this; } AccuracyFulfilmentIndicator& AccuracyFulfilmentIndicator::operator=(const AccuracyFulfilmentIndicator& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); enum_value = other_value.enum_value; return *this; } boolean AccuracyFulfilmentIndicator::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean AccuracyFulfilmentIndicator::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value == other_value; } boolean AccuracyFulfilmentIndicator::operator==(const AccuracyFulfilmentIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value == other_value.enum_value; } boolean AccuracyFulfilmentIndicator::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean AccuracyFulfilmentIndicator::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value < other_value; } boolean AccuracyFulfilmentIndicator::operator<(const AccuracyFulfilmentIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value < other_value.enum_value; } boolean AccuracyFulfilmentIndicator::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean AccuracyFulfilmentIndicator::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value > other_value; } boolean AccuracyFulfilmentIndicator::operator>(const AccuracyFulfilmentIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value > other_value.enum_value; } const char *AccuracyFulfilmentIndicator::enum_to_str(enum_type enum_par) { switch (enum_par) { case requested__Accuracy__Fulfilled: return "requested_Accuracy_Fulfilled"; case requested__Accuracy__Not__Fulfilled: return "requested_Accuracy_Not_Fulfilled"; default: return ""; } } AccuracyFulfilmentIndicator::enum_type AccuracyFulfilmentIndicator::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "requested_Accuracy_Fulfilled")) return requested__Accuracy__Fulfilled; if (!strcmp(str_par, "requested_Accuracy_Not_Fulfilled")) return requested__Accuracy__Not__Fulfilled; } return UNKNOWN_VALUE; } boolean AccuracyFulfilmentIndicator::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int AccuracyFulfilmentIndicator::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int AccuracyFulfilmentIndicator::enum2int(const AccuracyFulfilmentIndicator& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void AccuracyFulfilmentIndicator::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", int_val); enum_value = (enum_type)int_val; } AccuracyFulfilmentIndicator::operator AccuracyFulfilmentIndicator::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return enum_value; } void AccuracyFulfilmentIndicator::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void AccuracyFulfilmentIndicator::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.AccuracyFulfilmentIndicator"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.AccuracyFulfilmentIndicator."); } } void AccuracyFulfilmentIndicator::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); text_buf.push_int(enum_value); } void AccuracyFulfilmentIndicator::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", enum_value); } void AccuracyFulfilmentIndicator::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AccuracyFulfilmentIndicator::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* AccuracyFulfilmentIndicator::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean AccuracyFulfilmentIndicator::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.AccuracyFulfilmentIndicator: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int AccuracyFulfilmentIndicator::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int AccuracyFulfilmentIndicator::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = requested__Accuracy__Fulfilled; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int AccuracyFulfilmentIndicator::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int AccuracyFulfilmentIndicator::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void AccuracyFulfilmentIndicator::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case requested__Accuracy__Fulfilled: enc_val = 0; ext_bit = FALSE; break; case requested__Accuracy__Not__Fulfilled: enc_val = 1; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 1); } void AccuracyFulfilmentIndicator::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = requested__Accuracy__Fulfilled; break; case 1: enum_value = requested__Accuracy__Not__Fulfilled; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", dec_int); break; } } void AccuracyFulfilmentIndicator_template::copy_template(const AccuracyFulfilmentIndicator_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new AccuracyFulfilmentIndicator_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new AccuracyFulfilmentIndicator_template(*other_value.implication_.precondition); implication_.implied_template = new AccuracyFulfilmentIndicator_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template() { } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!AccuracyFulfilmentIndicator::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator with unknown numeric value %d.", other_value); single_value = (AccuracyFulfilmentIndicator::enum_type)other_value; } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(AccuracyFulfilmentIndicator::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(const AccuracyFulfilmentIndicator& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == AccuracyFulfilmentIndicator::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); single_value = other_value.enum_value; } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (AccuracyFulfilmentIndicator::enum_type)(const AccuracyFulfilmentIndicator&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator from an unbound optional field."); } } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(AccuracyFulfilmentIndicator_template* p_precondition, AccuracyFulfilmentIndicator_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AccuracyFulfilmentIndicator_template::AccuracyFulfilmentIndicator_template(const AccuracyFulfilmentIndicator_template& other_value) : Base_Template() { copy_template(other_value); } AccuracyFulfilmentIndicator_template::~AccuracyFulfilmentIndicator_template() { clean_up(); } boolean AccuracyFulfilmentIndicator_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean AccuracyFulfilmentIndicator_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != AccuracyFulfilmentIndicator::UNBOUND_VALUE; } void AccuracyFulfilmentIndicator_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(int other_value) { if (!AccuracyFulfilmentIndicator::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (AccuracyFulfilmentIndicator::enum_type)other_value; return *this; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(AccuracyFulfilmentIndicator::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(const AccuracyFulfilmentIndicator& other_value) { if (other_value.enum_value == AccuracyFulfilmentIndicator::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (AccuracyFulfilmentIndicator::enum_type)(const AccuracyFulfilmentIndicator&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } return *this; } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::operator=(const AccuracyFulfilmentIndicator_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AccuracyFulfilmentIndicator_template::match(AccuracyFulfilmentIndicator::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } return FALSE; } boolean AccuracyFulfilmentIndicator_template::match(const AccuracyFulfilmentIndicator& other_value, boolean) const { if (other_value.enum_value == AccuracyFulfilmentIndicator::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator with an unbound value."); return match(other_value.enum_value); } AccuracyFulfilmentIndicator::enum_type AccuracyFulfilmentIndicator_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return single_value; } void AccuracyFulfilmentIndicator_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AccuracyFulfilmentIndicator_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } } AccuracyFulfilmentIndicator_template& AccuracyFulfilmentIndicator_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); return value_list.list_value[list_index]; } void AccuracyFulfilmentIndicator_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(AccuracyFulfilmentIndicator::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void AccuracyFulfilmentIndicator_template::log_match(const AccuracyFulfilmentIndicator& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void AccuracyFulfilmentIndicator_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } } void AccuracyFulfilmentIndicator_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (AccuracyFulfilmentIndicator::enum_type)text_buf.pull_int().get_val(); if (!AccuracyFulfilmentIndicator::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new AccuracyFulfilmentIndicator_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.AccuracyFulfilmentIndicator."); } } boolean AccuracyFulfilmentIndicator_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AccuracyFulfilmentIndicator_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { AccuracyFulfilmentIndicator_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { AccuracyFulfilmentIndicator::enum_type enum_val = AccuracyFulfilmentIndicator::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!AccuracyFulfilmentIndicator::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.AccuracyFulfilmentIndicator."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { AccuracyFulfilmentIndicator_template* precondition = new AccuracyFulfilmentIndicator_template; precondition->set_param(*m_p->get_elem(0)); AccuracyFulfilmentIndicator_template* implied_template = new AccuracyFulfilmentIndicator_template; implied_template->set_param(*m_p->get_elem(1)); *this = AccuracyFulfilmentIndicator_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.AccuracyFulfilmentIndicator"); } is_ifpresent = param.get_ifpresent(); } void AccuracyFulfilmentIndicator_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.AccuracyFulfilmentIndicator"); } Additional__CSPS__coordination__information::Additional__CSPS__coordination__information() { } Additional__CSPS__coordination__information::Additional__CSPS__coordination__information(const OPTIONAL< LAI >& par_old__LAI, const OPTIONAL< OCTETSTRING >& par_old__RAC, const OPTIONAL< BITSTRING >& par_nRI, const OPTIONAL< ASN_NULL >& par_uE__is__Attaching, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 >& par_iE__Extensions) : field_old__LAI(par_old__LAI), field_old__RAC(par_old__RAC), field_nRI(par_nRI), field_uE__is__Attaching(par_uE__is__Attaching), field_iE__Extensions(par_iE__Extensions) { } Additional__CSPS__coordination__information::Additional__CSPS__coordination__information(const Additional__CSPS__coordination__information& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Additional-CSPS-coordination-information."); if (other_value.old__LAI().is_bound()) field_old__LAI = other_value.old__LAI(); else field_old__LAI.clean_up(); if (other_value.old__RAC().is_bound()) field_old__RAC = other_value.old__RAC(); else field_old__RAC.clean_up(); if (other_value.nRI().is_bound()) field_nRI = other_value.nRI(); else field_nRI.clean_up(); if (other_value.uE__is__Attaching().is_bound()) field_uE__is__Attaching = other_value.uE__is__Attaching(); else field_uE__is__Attaching.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void Additional__CSPS__coordination__information::clean_up() { field_old__LAI.clean_up(); field_old__RAC.clean_up(); field_nRI.clean_up(); field_uE__is__Attaching.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* Additional__CSPS__coordination__information::get_descriptor() const { return &Additional__CSPS__coordination__information_descr_; } Additional__CSPS__coordination__information& Additional__CSPS__coordination__information::operator=(const Additional__CSPS__coordination__information& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Additional-CSPS-coordination-information."); if (other_value.old__LAI().is_bound()) field_old__LAI = other_value.old__LAI(); else field_old__LAI.clean_up(); if (other_value.old__RAC().is_bound()) field_old__RAC = other_value.old__RAC(); else field_old__RAC.clean_up(); if (other_value.nRI().is_bound()) field_nRI = other_value.nRI(); else field_nRI.clean_up(); if (other_value.uE__is__Attaching().is_bound()) field_uE__is__Attaching = other_value.uE__is__Attaching(); else field_uE__is__Attaching.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean Additional__CSPS__coordination__information::operator==(const Additional__CSPS__coordination__information& other_value) const { return field_old__LAI==other_value.field_old__LAI && field_old__RAC==other_value.field_old__RAC && field_nRI==other_value.field_nRI && field_uE__is__Attaching==other_value.field_uE__is__Attaching && field_iE__Extensions==other_value.field_iE__Extensions; } boolean Additional__CSPS__coordination__information::is_bound() const { return (OPTIONAL_OMIT == field_old__LAI.get_selection() || field_old__LAI.is_bound()) || (OPTIONAL_OMIT == field_old__RAC.get_selection() || field_old__RAC.is_bound()) || (OPTIONAL_OMIT == field_nRI.get_selection() || field_nRI.is_bound()) || (OPTIONAL_OMIT == field_uE__is__Attaching.get_selection() || field_uE__is__Attaching.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean Additional__CSPS__coordination__information::is_value() const { return (OPTIONAL_OMIT == field_old__LAI.get_selection() || field_old__LAI.is_value()) && (OPTIONAL_OMIT == field_old__RAC.get_selection() || field_old__RAC.is_value()) && (OPTIONAL_OMIT == field_nRI.get_selection() || field_nRI.is_value()) && (OPTIONAL_OMIT == field_uE__is__Attaching.get_selection() || field_uE__is__Attaching.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int Additional__CSPS__coordination__information::size_of() const { int ret_val = 0; if (field_old__LAI.ispresent()) ret_val++; if (field_old__RAC.ispresent()) ret_val++; if (field_nRI.ispresent()) ret_val++; if (field_uE__is__Attaching.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void Additional__CSPS__coordination__information::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ old_LAI := "); field_old__LAI.log(); TTCN_Logger::log_event_str(", old_RAC := "); field_old__RAC.log(); TTCN_Logger::log_event_str(", nRI := "); field_nRI.log(); TTCN_Logger::log_event_str(", uE_is_Attaching := "); field_uE__is__Attaching.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void Additional__CSPS__coordination__information::set_implicit_omit() { if (!old__LAI().is_bound()) old__LAI() = OMIT_VALUE; else old__LAI().set_implicit_omit(); if (!old__RAC().is_bound()) old__RAC() = OMIT_VALUE; else old__RAC().set_implicit_omit(); if (!nRI().is_bound()) nRI() = OMIT_VALUE; else nRI().set_implicit_omit(); if (!uE__is__Attaching().is_bound()) uE__is__Attaching() = OMIT_VALUE; else uE__is__Attaching().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Additional__CSPS__coordination__information::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (50 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) old__LAI().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) old__RAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nRI().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) uE__is__Attaching().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "old_LAI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { old__LAI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "old_RAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { old__RAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nRI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nRI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "uE_is_Attaching")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { uE__is__Attaching().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Additional-CSPS-coordination-information: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Additional-CSPS-coordination-information"); } } void Additional__CSPS__coordination__information::encode_text(Text_Buf& text_buf) const { field_old__LAI.encode_text(text_buf); field_old__RAC.encode_text(text_buf); field_nRI.encode_text(text_buf); field_uE__is__Attaching.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void Additional__CSPS__coordination__information::decode_text(Text_Buf& text_buf) { field_old__LAI.decode_text(text_buf); field_old__RAC.decode_text(text_buf); field_nRI.decode_text(text_buf); field_uE__is__Attaching.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void Additional__CSPS__coordination__information::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Additional__CSPS__coordination__information::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Additional__CSPS__coordination__information::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("old_LAI': "); new_tlv->add_TLV(field_old__LAI.BER_encode_TLV(Additional__CSPS__coordination__information_old__LAI_descr_, p_coding)); ec_1.set_msg("old_RAC': "); new_tlv->add_TLV(field_old__RAC.BER_encode_TLV(Additional__CSPS__coordination__information_old__RAC_descr_, p_coding)); ec_1.set_msg("nRI': "); new_tlv->add_TLV(field_nRI.BER_encode_TLV(Additional__CSPS__coordination__information_nRI_descr_, p_coding)); ec_1.set_msg("uE_is_Attaching': "); new_tlv->add_TLV(field_uE__is__Attaching.BER_encode_TLV(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Additional__CSPS__coordination__information::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Additional-CSPS-coordination-information' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("old_LAI': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_old__LAI=OMIT_VALUE; else { field_old__LAI.BER_decode_TLV(Additional__CSPS__coordination__information_old__LAI_descr_, tmp_tlv, L_form); if(field_old__LAI.ispresent()) tlv_present=FALSE; } ec_2.set_msg("old_RAC': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_old__RAC=OMIT_VALUE; else { field_old__RAC.BER_decode_TLV(Additional__CSPS__coordination__information_old__RAC_descr_, tmp_tlv, L_form); if(field_old__RAC.ispresent()) tlv_present=FALSE; } ec_2.set_msg("nRI': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_nRI=OMIT_VALUE; else { field_nRI.BER_decode_TLV(Additional__CSPS__coordination__information_nRI_descr_, tmp_tlv, L_form); if(field_nRI.ispresent()) tlv_present=FALSE; } ec_2.set_msg("uE_is_Attaching': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_uE__is__Attaching=OMIT_VALUE; else { field_uE__is__Attaching.BER_decode_TLV(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, tmp_tlv, L_form); if(field_uE__is__Attaching.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(Additional__CSPS__coordination__information_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Additional__CSPS__coordination__information::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Additional-CSPS-coordination-information."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); if (field_old__LAI.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "old_LAI"); enc_len += field_old__LAI.JSON_encode(Additional__CSPS__coordination__information_old__LAI_descr_, p_tok, FALSE); } if (field_old__RAC.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "old_RAC"); enc_len += field_old__RAC.JSON_encode(Additional__CSPS__coordination__information_old__RAC_descr_, p_tok, FALSE); } if (field_nRI.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "nRI"); enc_len += field_nRI.JSON_encode(Additional__CSPS__coordination__information_nRI_descr_, p_tok, FALSE); } if (field_uE__is__Attaching.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "uE_is_Attaching"); enc_len += field_uE__is__Attaching.JSON_encode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Additional__CSPS__coordination__information::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean old__LAI_found = FALSE; boolean old__RAC_found = FALSE; boolean nRI_found = FALSE; boolean uE__is__Attaching_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (7 == name_len && 0 == strncmp(fld_name, "old_LAI", name_len)) { old__LAI_found = TRUE; int ret_val = field_old__LAI.JSON_decode(Additional__CSPS__coordination__information_old__LAI_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "old_LAI"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (7 == name_len && 0 == strncmp(fld_name, "old_RAC", name_len)) { old__RAC_found = TRUE; int ret_val = field_old__RAC.JSON_decode(Additional__CSPS__coordination__information_old__RAC_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "old_RAC"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (3 == name_len && 0 == strncmp(fld_name, "nRI", name_len)) { nRI_found = TRUE; int ret_val = field_nRI.JSON_decode(Additional__CSPS__coordination__information_nRI_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 3, "nRI"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (15 == name_len && 0 == strncmp(fld_name, "uE_is_Attaching", name_len)) { uE__is__Attaching_found = TRUE; int ret_val = field_uE__is__Attaching.JSON_decode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 15, "uE_is_Attaching"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!old__LAI_found) { field_old__LAI = OMIT_VALUE; } if (!old__RAC_found) { field_old__RAC = OMIT_VALUE; } if (!nRI_found) { field_nRI = OMIT_VALUE; } if (!uE__is__Attaching_found) { field_uE__is__Attaching = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int Additional__CSPS__coordination__information::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_old__LAI.is_present()) { c |= 64; } if (field_old__RAC.is_present()) { c |= 32; } if (field_nRI.is_present()) { c |= 16; } if (field_uE__is__Attaching.is_present()) { c |= 8; } if (field_iE__Extensions.is_present()) { c |= 4; } p_buf.put_c(c); if (field_old__LAI.is_present()) field_old__LAI.OER_encode(Additional__CSPS__coordination__information_old__LAI_descr_, p_buf); if (field_old__RAC.is_present()) field_old__RAC.OER_encode(Additional__CSPS__coordination__information_old__RAC_descr_, p_buf); if (field_nRI.is_present()) field_nRI.OER_encode(Additional__CSPS__coordination__information_nRI_descr_, p_buf); if (field_uE__is__Attaching.is_present()) field_uE__is__Attaching.OER_encode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_buf); return 0; } int Additional__CSPS__coordination__information::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } if (uc[0] & 64) field_old__LAI.OER_decode(Additional__CSPS__coordination__information_old__LAI_descr_, p_buf, p_oer); else field_old__LAI = OMIT_VALUE; if (uc[0] & 32) field_old__RAC.OER_decode(Additional__CSPS__coordination__information_old__RAC_descr_, p_buf, p_oer); else field_old__RAC = OMIT_VALUE; if (uc[0] & 16) field_nRI.OER_decode(Additional__CSPS__coordination__information_nRI_descr_, p_buf, p_oer); else field_nRI = OMIT_VALUE; if (uc[0] & 8) field_uE__is__Attaching.OER_decode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_buf, p_oer); else field_uE__is__Attaching = OMIT_VALUE; if (uc[0] & 4) field_iE__Extensions.OER_decode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Additional__CSPS__coordination__information::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_old__LAI_present = field_old__LAI.is_present(); p_buf.PER_put_bit(field_old__LAI_present); boolean field_old__RAC_present = field_old__RAC.is_present(); p_buf.PER_put_bit(field_old__RAC_present); boolean field_nRI_present = field_nRI.is_present(); p_buf.PER_put_bit(field_nRI_present); boolean field_uE__is__Attaching_present = field_uE__is__Attaching.is_present(); p_buf.PER_put_bit(field_uE__is__Attaching_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); if (field_old__LAI_present) field_old__LAI.PER_encode(Additional__CSPS__coordination__information_old__LAI_descr_, p_buf, p_options); if (field_old__RAC_present) field_old__RAC.PER_encode(Additional__CSPS__coordination__information_old__RAC_descr_, p_buf, p_options); if (field_nRI_present) field_nRI.PER_encode(Additional__CSPS__coordination__information_nRI_descr_, p_buf, p_options); if (field_uE__is__Attaching_present) field_uE__is__Attaching.PER_encode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_buf, p_options); } void Additional__CSPS__coordination__information::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_old__LAI_present = p_buf.PER_get_bit(); boolean field_old__RAC_present = p_buf.PER_get_bit(); boolean field_nRI_present = p_buf.PER_get_bit(); boolean field_uE__is__Attaching_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); if (field_old__LAI_present) field_old__LAI.PER_decode(Additional__CSPS__coordination__information_old__LAI_descr_, p_buf, p_options); else field_old__LAI = OMIT_VALUE; if (field_old__RAC_present) field_old__RAC.PER_decode(Additional__CSPS__coordination__information_old__RAC_descr_, p_buf, p_options); else field_old__RAC = OMIT_VALUE; if (field_nRI_present) field_nRI.PER_decode(Additional__CSPS__coordination__information_nRI_descr_, p_buf, p_options); else field_nRI = OMIT_VALUE; if (field_uE__is__Attaching_present) field_uE__is__Attaching.PER_decode(Additional__CSPS__coordination__information_uE__is__Attaching_descr_, p_buf, p_options); else field_uE__is__Attaching = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(Additional__CSPS__coordination__information_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Additional__CSPS__coordination__information_template::single_value_struct { LAI_template field_old__LAI; OCTETSTRING_template field_old__RAC; BITSTRING_template field_nRI; ASN_NULL_template field_uE__is__Attaching; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template field_iE__Extensions; }; void Additional__CSPS__coordination__information_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_old__LAI = ANY_OR_OMIT; single_value->field_old__RAC = ANY_OR_OMIT; single_value->field_nRI = ANY_OR_OMIT; single_value->field_uE__is__Attaching = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void Additional__CSPS__coordination__information_template::copy_value(const Additional__CSPS__coordination__information& other_value) { single_value = new single_value_struct; if (other_value.old__LAI().is_bound()) { if (other_value.old__LAI().ispresent()) single_value->field_old__LAI = other_value.old__LAI()(); else single_value->field_old__LAI = OMIT_VALUE; } else { single_value->field_old__LAI.clean_up(); } if (other_value.old__RAC().is_bound()) { if (other_value.old__RAC().ispresent()) single_value->field_old__RAC = other_value.old__RAC()(); else single_value->field_old__RAC = OMIT_VALUE; } else { single_value->field_old__RAC.clean_up(); } if (other_value.nRI().is_bound()) { if (other_value.nRI().ispresent()) single_value->field_nRI = other_value.nRI()(); else single_value->field_nRI = OMIT_VALUE; } else { single_value->field_nRI.clean_up(); } if (other_value.uE__is__Attaching().is_bound()) { if (other_value.uE__is__Attaching().ispresent()) single_value->field_uE__is__Attaching = other_value.uE__is__Attaching()(); else single_value->field_uE__is__Attaching = OMIT_VALUE; } else { single_value->field_uE__is__Attaching.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void Additional__CSPS__coordination__information_template::copy_template(const Additional__CSPS__coordination__information_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.old__LAI().get_selection()) { single_value->field_old__LAI = other_value.old__LAI(); } else { single_value->field_old__LAI.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.old__RAC().get_selection()) { single_value->field_old__RAC = other_value.old__RAC(); } else { single_value->field_old__RAC.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.nRI().get_selection()) { single_value->field_nRI = other_value.nRI(); } else { single_value->field_nRI.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.uE__is__Attaching().get_selection()) { single_value->field_uE__is__Attaching = other_value.uE__is__Attaching(); } else { single_value->field_uE__is__Attaching.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Additional__CSPS__coordination__information_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Additional__CSPS__coordination__information_template(*other_value.implication_.precondition); implication_.implied_template = new Additional__CSPS__coordination__information_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Additional-CSPS-coordination-information."); break; } set_selection(other_value); } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template() { } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(const Additional__CSPS__coordination__information& other_value) { copy_value(other_value); } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Additional__CSPS__coordination__information&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Additional-CSPS-coordination-information from an unbound optional field."); } } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(Additional__CSPS__coordination__information_template* p_precondition, Additional__CSPS__coordination__information_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Additional__CSPS__coordination__information_template::Additional__CSPS__coordination__information_template(const Additional__CSPS__coordination__information_template& other_value) : Base_Template() { copy_template(other_value); } Additional__CSPS__coordination__information_template::~Additional__CSPS__coordination__information_template() { clean_up(); } Additional__CSPS__coordination__information_template& Additional__CSPS__coordination__information_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Additional__CSPS__coordination__information_template& Additional__CSPS__coordination__information_template::operator=(const Additional__CSPS__coordination__information& other_value) { clean_up(); copy_value(other_value); return *this; } Additional__CSPS__coordination__information_template& Additional__CSPS__coordination__information_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Additional__CSPS__coordination__information&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Additional-CSPS-coordination-information."); } return *this; } Additional__CSPS__coordination__information_template& Additional__CSPS__coordination__information_template::operator=(const Additional__CSPS__coordination__information_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Additional__CSPS__coordination__information_template::match(const Additional__CSPS__coordination__information& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.old__LAI().is_bound()) return FALSE; if((other_value.old__LAI().ispresent() ? !single_value->field_old__LAI.match((const LAI&)other_value.old__LAI(), legacy) : !single_value->field_old__LAI.match_omit(legacy)))return FALSE; if(!other_value.old__RAC().is_bound()) return FALSE; if((other_value.old__RAC().ispresent() ? !single_value->field_old__RAC.match((const OCTETSTRING&)other_value.old__RAC(), legacy) : !single_value->field_old__RAC.match_omit(legacy)))return FALSE; if(!other_value.nRI().is_bound()) return FALSE; if((other_value.nRI().ispresent() ? !single_value->field_nRI.match((const BITSTRING&)other_value.nRI(), legacy) : !single_value->field_nRI.match_omit(legacy)))return FALSE; if(!other_value.uE__is__Attaching().is_bound()) return FALSE; if((other_value.uE__is__Attaching().ispresent() ? !single_value->field_uE__is__Attaching.match((const ASN_NULL&)other_value.uE__is__Attaching(), legacy) : !single_value->field_uE__is__Attaching.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Additional-CSPS-coordination-information."); } return FALSE; } boolean Additional__CSPS__coordination__information_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return (single_value->field_old__LAI.is_omit() || single_value->field_old__LAI.is_bound()) || (single_value->field_old__RAC.is_omit() || single_value->field_old__RAC.is_bound()) || (single_value->field_nRI.is_omit() || single_value->field_nRI.is_bound()) || (single_value->field_uE__is__Attaching.is_omit() || single_value->field_uE__is__Attaching.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean Additional__CSPS__coordination__information_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return (single_value->field_old__LAI.is_omit() || single_value->field_old__LAI.is_value()) && (single_value->field_old__RAC.is_omit() || single_value->field_old__RAC.is_value()) && (single_value->field_nRI.is_omit() || single_value->field_nRI.is_value()) && (single_value->field_uE__is__Attaching.is_omit() || single_value->field_uE__is__Attaching.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void Additional__CSPS__coordination__information_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Additional__CSPS__coordination__information Additional__CSPS__coordination__information_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); Additional__CSPS__coordination__information ret_val; if (single_value->field_old__LAI.is_omit()) ret_val.old__LAI() = OMIT_VALUE; else if (single_value->field_old__LAI.is_bound()) { ret_val.old__LAI() = single_value->field_old__LAI.valueof(); } if (single_value->field_old__RAC.is_omit()) ret_val.old__RAC() = OMIT_VALUE; else if (single_value->field_old__RAC.is_bound()) { ret_val.old__RAC() = single_value->field_old__RAC.valueof(); } if (single_value->field_nRI.is_omit()) ret_val.nRI() = OMIT_VALUE; else if (single_value->field_nRI.is_bound()) { ret_val.nRI() = single_value->field_nRI.valueof(); } if (single_value->field_uE__is__Attaching.is_omit()) ret_val.uE__is__Attaching() = OMIT_VALUE; else if (single_value->field_uE__is__Attaching.is_bound()) { ret_val.uE__is__Attaching() = single_value->field_uE__is__Attaching.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void Additional__CSPS__coordination__information_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Additional-CSPS-coordination-information."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Additional__CSPS__coordination__information_template[list_length]; } Additional__CSPS__coordination__information_template& Additional__CSPS__coordination__information_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Additional-CSPS-coordination-information."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return value_list.list_value[list_index]; } LAI_template& Additional__CSPS__coordination__information_template::old__LAI() { set_specific(); return single_value->field_old__LAI; } const LAI_template& Additional__CSPS__coordination__information_template::old__LAI() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field old_LAI of a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return single_value->field_old__LAI; } OCTETSTRING_template& Additional__CSPS__coordination__information_template::old__RAC() { set_specific(); return single_value->field_old__RAC; } const OCTETSTRING_template& Additional__CSPS__coordination__information_template::old__RAC() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field old_RAC of a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return single_value->field_old__RAC; } BITSTRING_template& Additional__CSPS__coordination__information_template::nRI() { set_specific(); return single_value->field_nRI; } const BITSTRING_template& Additional__CSPS__coordination__information_template::nRI() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field nRI of a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return single_value->field_nRI; } ASN_NULL_template& Additional__CSPS__coordination__information_template::uE__is__Attaching() { set_specific(); return single_value->field_uE__is__Attaching; } const ASN_NULL_template& Additional__CSPS__coordination__information_template::uE__is__Attaching() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field uE_is_Attaching of a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return single_value->field_uE__is__Attaching; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& Additional__CSPS__coordination__information_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& Additional__CSPS__coordination__information_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.Additional-CSPS-coordination-information."); return single_value->field_iE__Extensions; } int Additional__CSPS__coordination__information_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 0; if (single_value->field_old__LAI.is_present()) ret_val++; if (single_value->field_old__RAC.is_present()) ret_val++; if (single_value->field_nRI.is_present()) ret_val++; if (single_value->field_uE__is__Attaching.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Additional-CSPS-coordination-information containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Additional-CSPS-coordination-information."); } return 0; } void Additional__CSPS__coordination__information_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ old_LAI := "); single_value->field_old__LAI.log(); TTCN_Logger::log_event_str(", old_RAC := "); single_value->field_old__RAC.log(); TTCN_Logger::log_event_str(", nRI := "); single_value->field_nRI.log(); TTCN_Logger::log_event_str(", uE_is_Attaching := "); single_value->field_uE__is__Attaching.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Additional__CSPS__coordination__information_template::log_match(const Additional__CSPS__coordination__information& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if (match_value.old__LAI().ispresent()){ if(!single_value->field_old__LAI.match(match_value.old__LAI(), legacy)){ TTCN_Logger::log_logmatch_info(".old_LAI"); single_value->field_old__LAI.log_match(match_value.old__LAI(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_old__LAI.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".old_LAI := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_old__LAI.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.old__RAC().ispresent()){ if(!single_value->field_old__RAC.match(match_value.old__RAC(), legacy)){ TTCN_Logger::log_logmatch_info(".old_RAC"); single_value->field_old__RAC.log_match(match_value.old__RAC(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_old__RAC.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".old_RAC := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_old__RAC.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.nRI().ispresent()){ if(!single_value->field_nRI.match(match_value.nRI(), legacy)){ TTCN_Logger::log_logmatch_info(".nRI"); single_value->field_nRI.log_match(match_value.nRI(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_nRI.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".nRI := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_nRI.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.uE__is__Attaching().ispresent()){ if(!single_value->field_uE__is__Attaching.match(match_value.uE__is__Attaching(), legacy)){ TTCN_Logger::log_logmatch_info(".uE_is_Attaching"); single_value->field_uE__is__Attaching.log_match(match_value.uE__is__Attaching(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_uE__is__Attaching.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".uE_is_Attaching := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_uE__is__Attaching.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ old_LAI := "); if (match_value.old__LAI().ispresent()) { single_value->field_old__LAI.log_match(match_value.old__LAI(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_old__LAI.log(); if (single_value->field_old__LAI.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", old_RAC := "); if (match_value.old__RAC().ispresent()) { single_value->field_old__RAC.log_match(match_value.old__RAC(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_old__RAC.log(); if (single_value->field_old__RAC.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", nRI := "); if (match_value.nRI().ispresent()) { single_value->field_nRI.log_match(match_value.nRI(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_nRI.log(); if (single_value->field_nRI.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", uE_is_Attaching := "); if (match_value.uE__is__Attaching().ispresent()) { single_value->field_uE__is__Attaching.log_match(match_value.uE__is__Attaching(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_uE__is__Attaching.log(); if (single_value->field_uE__is__Attaching.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Additional__CSPS__coordination__information_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (!old__LAI().is_bound()) old__LAI() = OMIT_VALUE; else old__LAI().set_implicit_omit(); if (!old__RAC().is_bound()) old__RAC() = OMIT_VALUE; else old__RAC().set_implicit_omit(); if (!nRI().is_bound()) nRI() = OMIT_VALUE; else nRI().set_implicit_omit(); if (!uE__is__Attaching().is_bound()) uE__is__Attaching() = OMIT_VALUE; else uE__is__Attaching().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Additional__CSPS__coordination__information_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_old__LAI.encode_text(text_buf); single_value->field_old__RAC.encode_text(text_buf); single_value->field_nRI.encode_text(text_buf); single_value->field_uE__is__Attaching.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Additional-CSPS-coordination-information."); } } void Additional__CSPS__coordination__information_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_old__LAI.decode_text(text_buf); single_value->field_old__RAC.decode_text(text_buf); single_value->field_nRI.decode_text(text_buf); single_value->field_uE__is__Attaching.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Additional__CSPS__coordination__information_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Additional-CSPS-coordination-information."); } } void Additional__CSPS__coordination__information_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Additional__CSPS__coordination__information_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) old__LAI().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) old__RAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nRI().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) uE__is__Attaching().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "old_LAI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { old__LAI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "old_RAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { old__RAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "nRI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { nRI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "uE_is_Attaching")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { uE__is__Attaching().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Additional-CSPS-coordination-information: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Additional__CSPS__coordination__information_template* precondition = new Additional__CSPS__coordination__information_template; precondition->set_param(*param.get_elem(0)); Additional__CSPS__coordination__information_template* implied_template = new Additional__CSPS__coordination__information_template; implied_template->set_param(*param.get_elem(1)); *this = Additional__CSPS__coordination__information_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Additional-CSPS-coordination-information"); } is_ifpresent = param.get_ifpresent(); } void Additional__CSPS__coordination__information_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_old__LAI.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); single_value->field_old__RAC.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); single_value->field_nRI.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); single_value->field_uE__is__Attaching.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Additional-CSPS-coordination-information"); } boolean Additional__CSPS__coordination__information_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Additional__CSPS__coordination__information_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_iE__Extensions) : field_pLMNidentity(par_pLMNidentity), field_lAC(par_lAC), field_iE__Extensions(par_iE__Extensions) { } LAI::LAI(const LAI& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.LAI."); if (other_value.pLMNidentity().is_bound()) field_pLMNidentity = other_value.pLMNidentity(); else field_pLMNidentity.clean_up(); if (other_value.lAC().is_bound()) field_lAC = other_value.lAC(); else field_lAC.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void LAI::clean_up() { field_pLMNidentity.clean_up(); field_lAC.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* LAI::get_descriptor() const { return &LAI_descr_; } LAI& LAI::operator=(const LAI& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.LAI."); if (other_value.pLMNidentity().is_bound()) field_pLMNidentity = other_value.pLMNidentity(); else field_pLMNidentity.clean_up(); if (other_value.lAC().is_bound()) field_lAC = other_value.lAC(); else field_lAC.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean LAI::operator==(const LAI& other_value) const { return field_pLMNidentity==other_value.field_pLMNidentity && field_lAC==other_value.field_lAC && field_iE__Extensions==other_value.field_iE__Extensions; } boolean LAI::is_bound() const { return (field_pLMNidentity.is_bound()) || (field_lAC.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean LAI::is_value() const { return field_pLMNidentity.is_value() && field_lAC.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int LAI::size_of() const { int ret_val = 2; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void LAI::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ pLMNidentity := "); field_pLMNidentity.log(); TTCN_Logger::log_event_str(", lAC := "); field_lAC.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void LAI::set_implicit_omit() { if (pLMNidentity().is_bound()) pLMNidentity().set_implicit_omit(); if (lAC().is_bound()) lAC().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void LAI::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) pLMNidentity().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "pLMNidentity")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pLMNidentity().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.LAI: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.LAI"); } } void LAI::encode_text(Text_Buf& text_buf) const { field_pLMNidentity.encode_text(text_buf); field_lAC.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void LAI::decode_text(Text_Buf& text_buf) { field_pLMNidentity.decode_text(text_buf); field_lAC.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void LAI::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void LAI::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* LAI::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("pLMNidentity': "); new_tlv->add_TLV(field_pLMNidentity.BER_encode_TLV(LAI_pLMNidentity_descr_, p_coding)); ec_1.set_msg("lAC': "); new_tlv->add_TLV(field_lAC.BER_encode_TLV(LAI_lAC_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(LAI_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean LAI::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.LAI' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("pLMNidentity': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_pLMNidentity.BER_decode_TLV(LAI_pLMNidentity_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("lAC': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_lAC.BER_decode_TLV(LAI_lAC_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(LAI_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int LAI::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.LAI."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "pLMNidentity"); enc_len += field_pLMNidentity.JSON_encode(LAI_pLMNidentity_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "lAC"); enc_len += field_lAC.JSON_encode(LAI_lAC_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(LAI_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int LAI::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean pLMNidentity_found = FALSE; boolean lAC_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (12 == name_len && 0 == strncmp(fld_name, "pLMNidentity", name_len)) { pLMNidentity_found = TRUE; int ret_val = field_pLMNidentity.JSON_decode(LAI_pLMNidentity_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 12, "pLMNidentity"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (3 == name_len && 0 == strncmp(fld_name, "lAC", name_len)) { lAC_found = TRUE; int ret_val = field_lAC.JSON_decode(LAI_lAC_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 3, "lAC"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(LAI_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!pLMNidentity_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "pLMNidentity"); return JSON_ERROR_FATAL; } if (!lAC_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "lAC"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int LAI::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 128; } p_buf.put_c(c); field_pLMNidentity.OER_encode(LAI_pLMNidentity_descr_, p_buf); field_lAC.OER_encode(LAI_lAC_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(LAI_iE__Extensions_descr_, p_buf); return 0; } int LAI::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); field_pLMNidentity.OER_decode(LAI_pLMNidentity_descr_, p_buf, p_oer); field_lAC.OER_decode(LAI_lAC_descr_, p_buf, p_oer); if (uc[0] & 128) field_iE__Extensions.OER_decode(LAI_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; return 0; } void LAI::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_pLMNidentity.PER_encode(LAI_pLMNidentity_descr_, p_buf, p_options); field_lAC.PER_encode(LAI_lAC_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(LAI_iE__Extensions_descr_, p_buf, p_options); } void LAI::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_pLMNidentity.PER_decode(LAI_pLMNidentity_descr_, p_buf, p_options); field_lAC.PER_decode(LAI_lAC_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(LAI_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; } struct LAI_template::single_value_struct { OCTETSTRING_template field_pLMNidentity; OCTETSTRING_template field_lAC; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template field_iE__Extensions; }; void LAI_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_pLMNidentity = ANY_VALUE; single_value->field_lAC = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void LAI_template::copy_value(const LAI& other_value) { single_value = new single_value_struct; if (other_value.pLMNidentity().is_bound()) { single_value->field_pLMNidentity = other_value.pLMNidentity(); } else { single_value->field_pLMNidentity.clean_up(); } if (other_value.lAC().is_bound()) { single_value->field_lAC = other_value.lAC(); } else { single_value->field_lAC.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void LAI_template::copy_template(const LAI_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.pLMNidentity().get_selection()) { single_value->field_pLMNidentity = other_value.pLMNidentity(); } else { single_value->field_pLMNidentity.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.lAC().get_selection()) { single_value->field_lAC = other_value.lAC(); } else { single_value->field_lAC.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new LAI_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new LAI_template(*other_value.implication_.precondition); implication_.implied_template = new LAI_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.LAI."); break; } set_selection(other_value); } LAI_template::LAI_template() { } LAI_template::LAI_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } LAI_template::LAI_template(const LAI& other_value) { copy_value(other_value); } LAI_template::LAI_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LAI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.LAI from an unbound optional field."); } } LAI_template::LAI_template(LAI_template* p_precondition, LAI_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } LAI_template::LAI_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } LAI_template::LAI_template(const LAI_template& other_value) : Base_Template() { copy_template(other_value); } LAI_template::~LAI_template() { clean_up(); } LAI_template& LAI_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } LAI_template& LAI_template::operator=(const LAI& other_value) { clean_up(); copy_value(other_value); return *this; } LAI_template& LAI_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LAI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.LAI."); } return *this; } LAI_template& LAI_template::operator=(const LAI_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean LAI_template::match(const LAI& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.pLMNidentity().is_bound()) return FALSE; if(!single_value->field_pLMNidentity.match(other_value.pLMNidentity(), legacy))return FALSE; if(!other_value.lAC().is_bound()) return FALSE; if(!single_value->field_lAC.match(other_value.lAC(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.LAI."); } return FALSE; } boolean LAI_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_pLMNidentity.is_bound() || single_value->field_lAC.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean LAI_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_pLMNidentity.is_value() && single_value->field_lAC.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void LAI_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } LAI LAI_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.LAI."); LAI ret_val; if (single_value->field_pLMNidentity.is_bound()) { ret_val.pLMNidentity() = single_value->field_pLMNidentity.valueof(); } if (single_value->field_lAC.is_bound()) { ret_val.lAC() = single_value->field_lAC.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void LAI_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.LAI."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new LAI_template[list_length]; } LAI_template& LAI_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.LAI."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.LAI."); return value_list.list_value[list_index]; } OCTETSTRING_template& LAI_template::pLMNidentity() { set_specific(); return single_value->field_pLMNidentity; } const OCTETSTRING_template& LAI_template::pLMNidentity() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pLMNidentity of a non-specific template of type @RANAP-IEs.LAI."); return single_value->field_pLMNidentity; } OCTETSTRING_template& LAI_template::lAC() { set_specific(); return single_value->field_lAC; } const OCTETSTRING_template& LAI_template::lAC() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lAC of a non-specific template of type @RANAP-IEs.LAI."); return single_value->field_lAC; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& LAI_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& LAI_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.LAI."); return single_value->field_iE__Extensions; } int LAI_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LAI containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.LAI."); } return 0; } void LAI_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ pLMNidentity := "); single_value->field_pLMNidentity.log(); TTCN_Logger::log_event_str(", lAC := "); single_value->field_lAC.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void LAI_template::log_match(const LAI& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_pLMNidentity.match(match_value.pLMNidentity(), legacy)){ TTCN_Logger::log_logmatch_info(".pLMNidentity"); single_value->field_pLMNidentity.log_match(match_value.pLMNidentity(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_lAC.match(match_value.lAC(), legacy)){ TTCN_Logger::log_logmatch_info(".lAC"); single_value->field_lAC.log_match(match_value.lAC(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ pLMNidentity := "); single_value->field_pLMNidentity.log_match(match_value.pLMNidentity(), legacy); TTCN_Logger::log_event_str(", lAC := "); single_value->field_lAC.log_match(match_value.lAC(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void LAI_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (pLMNidentity().is_bound()) pLMNidentity().set_implicit_omit(); if (lAC().is_bound()) lAC().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void LAI_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_pLMNidentity.encode_text(text_buf); single_value->field_lAC.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.LAI."); } } void LAI_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_pLMNidentity.decode_text(text_buf); single_value->field_lAC.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new LAI_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.LAI."); } } void LAI_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { LAI_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) pLMNidentity().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "pLMNidentity")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pLMNidentity().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "lAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.LAI: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { LAI_template* precondition = new LAI_template; precondition->set_param(*param.get_elem(0)); LAI_template* implied_template = new LAI_template; implied_template->set_param(*param.get_elem(1)); *this = LAI_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.LAI"); } is_ifpresent = param.get_ifpresent(); } void LAI_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_pLMNidentity.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LAI"); single_value->field_lAC.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LAI"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LAI"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.LAI"); } boolean LAI_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean LAI_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst1"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst1_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst1"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst1_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst2"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst2_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst2"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst2_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Pre-emptionCapability comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean Pre__emptionCapability::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); return enum_value > other_value; } boolean Pre__emptionCapability::operator>(const Pre__emptionCapability& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); return enum_value > other_value.enum_value; } const char *Pre__emptionCapability::enum_to_str(enum_type enum_par) { switch (enum_par) { case shall__not__trigger__pre__emption: return "shall_not_trigger_pre_emption"; case may__trigger__pre__emption: return "may_trigger_pre_emption"; default: return ""; } } Pre__emptionCapability::enum_type Pre__emptionCapability::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "shall_not_trigger_pre_emption")) return shall__not__trigger__pre__emption; if (!strcmp(str_par, "may_trigger_pre_emption")) return may__trigger__pre__emption; } return UNKNOWN_VALUE; } boolean Pre__emptionCapability::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int Pre__emptionCapability::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Pre-emptionCapability.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int Pre__emptionCapability::enum2int(const Pre__emptionCapability& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Pre-emptionCapability.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void Pre__emptionCapability::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.Pre-emptionCapability.", int_val); enum_value = (enum_type)int_val; } Pre__emptionCapability::operator Pre__emptionCapability::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.Pre-emptionCapability."); return enum_value; } void Pre__emptionCapability::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void Pre__emptionCapability::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.Pre-emptionCapability"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.Pre-emptionCapability."); } } void Pre__emptionCapability::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); text_buf.push_int(enum_value); } void Pre__emptionCapability::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.Pre-emptionCapability.", enum_value); } void Pre__emptionCapability::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Pre__emptionCapability::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Pre__emptionCapability::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Pre__emptionCapability::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.Pre-emptionCapability: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int Pre__emptionCapability::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int Pre__emptionCapability::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = shall__not__trigger__pre__emption; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int Pre__emptionCapability::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int Pre__emptionCapability::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void Pre__emptionCapability::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; switch (enum_value) { case shall__not__trigger__pre__emption: enc_val = 0; break; case may__trigger__pre__emption: enc_val = 1; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.Pre-emptionCapability."); } INTEGER::PER_encode_int(p_buf, enc_val, 1); } void Pre__emptionCapability::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; switch (dec_int) { case 0: enum_value = shall__not__trigger__pre__emption; break; case 1: enum_value = may__trigger__pre__emption; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.Pre-emptionCapability.", dec_int); break; } } void Pre__emptionCapability_template::copy_template(const Pre__emptionCapability_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Pre__emptionCapability_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Pre__emptionCapability_template(*other_value.implication_.precondition); implication_.implied_template = new Pre__emptionCapability_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } } Pre__emptionCapability_template::Pre__emptionCapability_template() { } Pre__emptionCapability_template::Pre__emptionCapability_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Pre__emptionCapability_template::Pre__emptionCapability_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!Pre__emptionCapability::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.Pre-emptionCapability with unknown numeric value %d.", other_value); single_value = (Pre__emptionCapability::enum_type)other_value; } Pre__emptionCapability_template::Pre__emptionCapability_template(Pre__emptionCapability::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } Pre__emptionCapability_template::Pre__emptionCapability_template(const Pre__emptionCapability& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == Pre__emptionCapability::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability."); single_value = other_value.enum_value; } Pre__emptionCapability_template::Pre__emptionCapability_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionCapability::enum_type)(const Pre__emptionCapability&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.Pre-emptionCapability from an unbound optional field."); } } Pre__emptionCapability_template::Pre__emptionCapability_template(Pre__emptionCapability_template* p_precondition, Pre__emptionCapability_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Pre__emptionCapability_template::Pre__emptionCapability_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Pre__emptionCapability_template::Pre__emptionCapability_template(const Pre__emptionCapability_template& other_value) : Base_Template() { copy_template(other_value); } Pre__emptionCapability_template::~Pre__emptionCapability_template() { clean_up(); } boolean Pre__emptionCapability_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean Pre__emptionCapability_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != Pre__emptionCapability::UNBOUND_VALUE; } void Pre__emptionCapability_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(int other_value) { if (!Pre__emptionCapability::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.Pre-emptionCapability.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionCapability::enum_type)other_value; return *this; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(Pre__emptionCapability::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(const Pre__emptionCapability& other_value) { if (other_value.enum_value == Pre__emptionCapability::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Pre-emptionCapability to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionCapability::enum_type)(const Pre__emptionCapability&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } return *this; } Pre__emptionCapability_template& Pre__emptionCapability_template::operator=(const Pre__emptionCapability_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Pre__emptionCapability_template::match(Pre__emptionCapability::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } return FALSE; } boolean Pre__emptionCapability_template::match(const Pre__emptionCapability& other_value, boolean) const { if (other_value.enum_value == Pre__emptionCapability::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.Pre-emptionCapability with an unbound value."); return match(other_value.enum_value); } Pre__emptionCapability::enum_type Pre__emptionCapability_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.Pre-emptionCapability."); return single_value; } void Pre__emptionCapability_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Pre__emptionCapability_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } } Pre__emptionCapability_template& Pre__emptionCapability_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.Pre-emptionCapability."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.Pre-emptionCapability."); return value_list.list_value[list_index]; } void Pre__emptionCapability_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(Pre__emptionCapability::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Pre__emptionCapability_template::log_match(const Pre__emptionCapability& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void Pre__emptionCapability_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } } void Pre__emptionCapability_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (Pre__emptionCapability::enum_type)text_buf.pull_int().get_val(); if (!Pre__emptionCapability::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.Pre-emptionCapability.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Pre__emptionCapability_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.Pre-emptionCapability."); } } boolean Pre__emptionCapability_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Pre__emptionCapability_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Pre__emptionCapability_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { Pre__emptionCapability::enum_type enum_val = Pre__emptionCapability::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!Pre__emptionCapability::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.Pre-emptionCapability."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { Pre__emptionCapability_template* precondition = new Pre__emptionCapability_template; precondition->set_param(*m_p->get_elem(0)); Pre__emptionCapability_template* implied_template = new Pre__emptionCapability_template; implied_template->set_param(*m_p->get_elem(1)); *this = Pre__emptionCapability_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.Pre-emptionCapability"); } is_ifpresent = param.get_ifpresent(); } void Pre__emptionCapability_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Pre-emptionCapability"); } Pre__emptionVulnerability::Pre__emptionVulnerability() { enum_value = UNBOUND_VALUE; } Pre__emptionVulnerability::Pre__emptionVulnerability(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.Pre-emptionVulnerability with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } Pre__emptionVulnerability::Pre__emptionVulnerability(enum_type other_value) { enum_value = other_value; } Pre__emptionVulnerability::Pre__emptionVulnerability(const Pre__emptionVulnerability& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); enum_value = other_value.enum_value; } Pre__emptionVulnerability& Pre__emptionVulnerability::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", other_value); enum_value = (enum_type)other_value; return *this; } Pre__emptionVulnerability& Pre__emptionVulnerability::operator=(enum_type other_value) { enum_value = other_value; return *this; } Pre__emptionVulnerability& Pre__emptionVulnerability::operator=(const Pre__emptionVulnerability& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); enum_value = other_value.enum_value; return *this; } boolean Pre__emptionVulnerability::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Pre-emptionVulnerability comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean Pre__emptionVulnerability::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value == other_value; } boolean Pre__emptionVulnerability::operator==(const Pre__emptionVulnerability& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value == other_value.enum_value; } boolean Pre__emptionVulnerability::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Pre-emptionVulnerability comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean Pre__emptionVulnerability::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value < other_value; } boolean Pre__emptionVulnerability::operator<(const Pre__emptionVulnerability& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value < other_value.enum_value; } boolean Pre__emptionVulnerability::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Pre-emptionVulnerability comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean Pre__emptionVulnerability::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value > other_value; } boolean Pre__emptionVulnerability::operator>(const Pre__emptionVulnerability& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value > other_value.enum_value; } const char *Pre__emptionVulnerability::enum_to_str(enum_type enum_par) { switch (enum_par) { case not__pre__emptable: return "not_pre_emptable"; case pre__emptable: return "pre_emptable"; default: return ""; } } Pre__emptionVulnerability::enum_type Pre__emptionVulnerability::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "not_pre_emptable")) return not__pre__emptable; if (!strcmp(str_par, "pre_emptable")) return pre__emptable; } return UNKNOWN_VALUE; } boolean Pre__emptionVulnerability::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int Pre__emptionVulnerability::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int Pre__emptionVulnerability::enum2int(const Pre__emptionVulnerability& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void Pre__emptionVulnerability::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", int_val); enum_value = (enum_type)int_val; } Pre__emptionVulnerability::operator Pre__emptionVulnerability::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return enum_value; } void Pre__emptionVulnerability::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void Pre__emptionVulnerability::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.Pre-emptionVulnerability"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.Pre-emptionVulnerability."); } } void Pre__emptionVulnerability::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); text_buf.push_int(enum_value); } void Pre__emptionVulnerability::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.Pre-emptionVulnerability.", enum_value); } void Pre__emptionVulnerability::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Pre__emptionVulnerability::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Pre__emptionVulnerability::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Pre__emptionVulnerability::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.Pre-emptionVulnerability: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int Pre__emptionVulnerability::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int Pre__emptionVulnerability::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = not__pre__emptable; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int Pre__emptionVulnerability::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int Pre__emptionVulnerability::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void Pre__emptionVulnerability::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; switch (enum_value) { case not__pre__emptable: enc_val = 0; break; case pre__emptable: enc_val = 1; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } INTEGER::PER_encode_int(p_buf, enc_val, 1); } void Pre__emptionVulnerability::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; switch (dec_int) { case 0: enum_value = not__pre__emptable; break; case 1: enum_value = pre__emptable; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.Pre-emptionVulnerability.", dec_int); break; } } void Pre__emptionVulnerability_template::copy_template(const Pre__emptionVulnerability_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Pre__emptionVulnerability_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Pre__emptionVulnerability_template(*other_value.implication_.precondition); implication_.implied_template = new Pre__emptionVulnerability_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template() { } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!Pre__emptionVulnerability::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability with unknown numeric value %d.", other_value); single_value = (Pre__emptionVulnerability::enum_type)other_value; } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(Pre__emptionVulnerability::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(const Pre__emptionVulnerability& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == Pre__emptionVulnerability::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); single_value = other_value.enum_value; } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionVulnerability::enum_type)(const Pre__emptionVulnerability&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability from an unbound optional field."); } } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(Pre__emptionVulnerability_template* p_precondition, Pre__emptionVulnerability_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Pre__emptionVulnerability_template::Pre__emptionVulnerability_template(const Pre__emptionVulnerability_template& other_value) : Base_Template() { copy_template(other_value); } Pre__emptionVulnerability_template::~Pre__emptionVulnerability_template() { clean_up(); } boolean Pre__emptionVulnerability_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean Pre__emptionVulnerability_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != Pre__emptionVulnerability::UNBOUND_VALUE; } void Pre__emptionVulnerability_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(int other_value) { if (!Pre__emptionVulnerability::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionVulnerability::enum_type)other_value; return *this; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(Pre__emptionVulnerability::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(const Pre__emptionVulnerability& other_value) { if (other_value.enum_value == Pre__emptionVulnerability::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Pre-emptionVulnerability to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Pre__emptionVulnerability::enum_type)(const Pre__emptionVulnerability&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } return *this; } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::operator=(const Pre__emptionVulnerability_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Pre__emptionVulnerability_template::match(Pre__emptionVulnerability::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } return FALSE; } boolean Pre__emptionVulnerability_template::match(const Pre__emptionVulnerability& other_value, boolean) const { if (other_value.enum_value == Pre__emptionVulnerability::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability with an unbound value."); return match(other_value.enum_value); } Pre__emptionVulnerability::enum_type Pre__emptionVulnerability_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return single_value; } void Pre__emptionVulnerability_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Pre__emptionVulnerability_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } } Pre__emptionVulnerability_template& Pre__emptionVulnerability_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); return value_list.list_value[list_index]; } void Pre__emptionVulnerability_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(Pre__emptionVulnerability::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Pre__emptionVulnerability_template::log_match(const Pre__emptionVulnerability& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void Pre__emptionVulnerability_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } } void Pre__emptionVulnerability_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (Pre__emptionVulnerability::enum_type)text_buf.pull_int().get_val(); if (!Pre__emptionVulnerability::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Pre__emptionVulnerability_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.Pre-emptionVulnerability."); } } boolean Pre__emptionVulnerability_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Pre__emptionVulnerability_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Pre__emptionVulnerability_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { Pre__emptionVulnerability::enum_type enum_val = Pre__emptionVulnerability::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!Pre__emptionVulnerability::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.Pre-emptionVulnerability."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { Pre__emptionVulnerability_template* precondition = new Pre__emptionVulnerability_template; precondition->set_param(*m_p->get_elem(0)); Pre__emptionVulnerability_template* implied_template = new Pre__emptionVulnerability_template; implied_template->set_param(*m_p->get_elem(1)); *this = Pre__emptionVulnerability_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.Pre-emptionVulnerability"); } is_ifpresent = param.get_ifpresent(); } void Pre__emptionVulnerability_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Pre-emptionVulnerability"); } QueuingAllowed::QueuingAllowed() { enum_value = UNBOUND_VALUE; } QueuingAllowed::QueuingAllowed(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.QueuingAllowed with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } QueuingAllowed::QueuingAllowed(enum_type other_value) { enum_value = other_value; } QueuingAllowed::QueuingAllowed(const QueuingAllowed& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); enum_value = other_value.enum_value; } QueuingAllowed& QueuingAllowed::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.QueuingAllowed.", other_value); enum_value = (enum_type)other_value; return *this; } QueuingAllowed& QueuingAllowed::operator=(enum_type other_value) { enum_value = other_value; return *this; } QueuingAllowed& QueuingAllowed::operator=(const QueuingAllowed& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); enum_value = other_value.enum_value; return *this; } boolean QueuingAllowed::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.QueuingAllowed comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean QueuingAllowed::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value == other_value; } boolean QueuingAllowed::operator==(const QueuingAllowed& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value == other_value.enum_value; } boolean QueuingAllowed::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.QueuingAllowed comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean QueuingAllowed::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value < other_value; } boolean QueuingAllowed::operator<(const QueuingAllowed& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value < other_value.enum_value; } boolean QueuingAllowed::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.QueuingAllowed comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean QueuingAllowed::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value > other_value; } boolean QueuingAllowed::operator>(const QueuingAllowed& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value > other_value.enum_value; } const char *QueuingAllowed::enum_to_str(enum_type enum_par) { switch (enum_par) { case queueing__not__allowed: return "queueing_not_allowed"; case queueing__allowed: return "queueing_allowed"; default: return ""; } } QueuingAllowed::enum_type QueuingAllowed::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "queueing_not_allowed")) return queueing__not__allowed; if (!strcmp(str_par, "queueing_allowed")) return queueing__allowed; } return UNKNOWN_VALUE; } boolean QueuingAllowed::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int QueuingAllowed::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.QueuingAllowed.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int QueuingAllowed::enum2int(const QueuingAllowed& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.QueuingAllowed.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void QueuingAllowed::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.QueuingAllowed.", int_val); enum_value = (enum_type)int_val; } QueuingAllowed::operator QueuingAllowed::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.QueuingAllowed."); return enum_value; } void QueuingAllowed::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void QueuingAllowed::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.QueuingAllowed"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.QueuingAllowed."); } } void QueuingAllowed::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); text_buf.push_int(enum_value); } void QueuingAllowed::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.QueuingAllowed.", enum_value); } void QueuingAllowed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void QueuingAllowed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* QueuingAllowed::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean QueuingAllowed::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.QueuingAllowed: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int QueuingAllowed::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int QueuingAllowed::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = queueing__not__allowed; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int QueuingAllowed::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int QueuingAllowed::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void QueuingAllowed::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; switch (enum_value) { case queueing__not__allowed: enc_val = 0; break; case queueing__allowed: enc_val = 1; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.QueuingAllowed."); } INTEGER::PER_encode_int(p_buf, enc_val, 1); } void QueuingAllowed::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; switch (dec_int) { case 0: enum_value = queueing__not__allowed; break; case 1: enum_value = queueing__allowed; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.QueuingAllowed.", dec_int); break; } } void QueuingAllowed_template::copy_template(const QueuingAllowed_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new QueuingAllowed_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new QueuingAllowed_template(*other_value.implication_.precondition); implication_.implied_template = new QueuingAllowed_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.QueuingAllowed."); } } QueuingAllowed_template::QueuingAllowed_template() { } QueuingAllowed_template::QueuingAllowed_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } QueuingAllowed_template::QueuingAllowed_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!QueuingAllowed::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.QueuingAllowed with unknown numeric value %d.", other_value); single_value = (QueuingAllowed::enum_type)other_value; } QueuingAllowed_template::QueuingAllowed_template(QueuingAllowed::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } QueuingAllowed_template::QueuingAllowed_template(const QueuingAllowed& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == QueuingAllowed::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.QueuingAllowed."); single_value = other_value.enum_value; } QueuingAllowed_template::QueuingAllowed_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (QueuingAllowed::enum_type)(const QueuingAllowed&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.QueuingAllowed from an unbound optional field."); } } QueuingAllowed_template::QueuingAllowed_template(QueuingAllowed_template* p_precondition, QueuingAllowed_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } QueuingAllowed_template::QueuingAllowed_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } QueuingAllowed_template::QueuingAllowed_template(const QueuingAllowed_template& other_value) : Base_Template() { copy_template(other_value); } QueuingAllowed_template::~QueuingAllowed_template() { clean_up(); } boolean QueuingAllowed_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean QueuingAllowed_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != QueuingAllowed::UNBOUND_VALUE; } void QueuingAllowed_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } QueuingAllowed_template& QueuingAllowed_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } QueuingAllowed_template& QueuingAllowed_template::operator=(int other_value) { if (!QueuingAllowed::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.QueuingAllowed.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (QueuingAllowed::enum_type)other_value; return *this; } QueuingAllowed_template& QueuingAllowed_template::operator=(QueuingAllowed::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } QueuingAllowed_template& QueuingAllowed_template::operator=(const QueuingAllowed& other_value) { if (other_value.enum_value == QueuingAllowed::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.QueuingAllowed to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } QueuingAllowed_template& QueuingAllowed_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (QueuingAllowed::enum_type)(const QueuingAllowed&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.QueuingAllowed."); } return *this; } QueuingAllowed_template& QueuingAllowed_template::operator=(const QueuingAllowed_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean QueuingAllowed_template::match(QueuingAllowed::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.QueuingAllowed."); } return FALSE; } boolean QueuingAllowed_template::match(const QueuingAllowed& other_value, boolean) const { if (other_value.enum_value == QueuingAllowed::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.QueuingAllowed with an unbound value."); return match(other_value.enum_value); } QueuingAllowed::enum_type QueuingAllowed_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.QueuingAllowed."); return single_value; } void QueuingAllowed_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new QueuingAllowed_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.QueuingAllowed."); } } QueuingAllowed_template& QueuingAllowed_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.QueuingAllowed."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.QueuingAllowed."); return value_list.list_value[list_index]; } void QueuingAllowed_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(QueuingAllowed::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void QueuingAllowed_template::log_match(const QueuingAllowed& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void QueuingAllowed_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.QueuingAllowed."); } } void QueuingAllowed_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (QueuingAllowed::enum_type)text_buf.pull_int().get_val(); if (!QueuingAllowed::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.QueuingAllowed.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new QueuingAllowed_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.QueuingAllowed."); } } boolean QueuingAllowed_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean QueuingAllowed_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { QueuingAllowed_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { QueuingAllowed::enum_type enum_val = QueuingAllowed::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!QueuingAllowed::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.QueuingAllowed."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { QueuingAllowed_template* precondition = new QueuingAllowed_template; precondition->set_param(*m_p->get_elem(0)); QueuingAllowed_template* implied_template = new QueuingAllowed_template; implied_template->set_param(*m_p->get_elem(1)); *this = QueuingAllowed_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.QueuingAllowed"); } is_ifpresent = param.get_ifpresent(); } void QueuingAllowed_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.QueuingAllowed"); } AllocationOrRetentionPriority::AllocationOrRetentionPriority() { } AllocationOrRetentionPriority::AllocationOrRetentionPriority(const INTEGER& par_priorityLevel, const Pre__emptionCapability& par_pre__emptionCapability, const Pre__emptionVulnerability& par_pre__emptionVulnerability, const QueuingAllowed& par_queuingAllowed, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 >& par_iE__Extensions) : field_priorityLevel(par_priorityLevel), field_pre__emptionCapability(par_pre__emptionCapability), field_pre__emptionVulnerability(par_pre__emptionVulnerability), field_queuingAllowed(par_queuingAllowed), field_iE__Extensions(par_iE__Extensions) { } AllocationOrRetentionPriority::AllocationOrRetentionPriority(const AllocationOrRetentionPriority& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.AllocationOrRetentionPriority."); if (other_value.priorityLevel().is_bound()) field_priorityLevel = other_value.priorityLevel(); else field_priorityLevel.clean_up(); if (other_value.pre__emptionCapability().is_bound()) field_pre__emptionCapability = other_value.pre__emptionCapability(); else field_pre__emptionCapability.clean_up(); if (other_value.pre__emptionVulnerability().is_bound()) field_pre__emptionVulnerability = other_value.pre__emptionVulnerability(); else field_pre__emptionVulnerability.clean_up(); if (other_value.queuingAllowed().is_bound()) field_queuingAllowed = other_value.queuingAllowed(); else field_queuingAllowed.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void AllocationOrRetentionPriority::clean_up() { field_priorityLevel.clean_up(); field_pre__emptionCapability.clean_up(); field_pre__emptionVulnerability.clean_up(); field_queuingAllowed.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* AllocationOrRetentionPriority::get_descriptor() const { return &AllocationOrRetentionPriority_descr_; } AllocationOrRetentionPriority& AllocationOrRetentionPriority::operator=(const AllocationOrRetentionPriority& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.AllocationOrRetentionPriority."); if (other_value.priorityLevel().is_bound()) field_priorityLevel = other_value.priorityLevel(); else field_priorityLevel.clean_up(); if (other_value.pre__emptionCapability().is_bound()) field_pre__emptionCapability = other_value.pre__emptionCapability(); else field_pre__emptionCapability.clean_up(); if (other_value.pre__emptionVulnerability().is_bound()) field_pre__emptionVulnerability = other_value.pre__emptionVulnerability(); else field_pre__emptionVulnerability.clean_up(); if (other_value.queuingAllowed().is_bound()) field_queuingAllowed = other_value.queuingAllowed(); else field_queuingAllowed.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean AllocationOrRetentionPriority::operator==(const AllocationOrRetentionPriority& other_value) const { return field_priorityLevel==other_value.field_priorityLevel && field_pre__emptionCapability==other_value.field_pre__emptionCapability && field_pre__emptionVulnerability==other_value.field_pre__emptionVulnerability && field_queuingAllowed==other_value.field_queuingAllowed && field_iE__Extensions==other_value.field_iE__Extensions; } boolean AllocationOrRetentionPriority::is_bound() const { return (field_priorityLevel.is_bound()) || (field_pre__emptionCapability.is_bound()) || (field_pre__emptionVulnerability.is_bound()) || (field_queuingAllowed.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean AllocationOrRetentionPriority::is_value() const { return field_priorityLevel.is_value() && field_pre__emptionCapability.is_value() && field_pre__emptionVulnerability.is_value() && field_queuingAllowed.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int AllocationOrRetentionPriority::size_of() const { int ret_val = 4; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void AllocationOrRetentionPriority::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ priorityLevel := "); field_priorityLevel.log(); TTCN_Logger::log_event_str(", pre_emptionCapability := "); field_pre__emptionCapability.log(); TTCN_Logger::log_event_str(", pre_emptionVulnerability := "); field_pre__emptionVulnerability.log(); TTCN_Logger::log_event_str(", queuingAllowed := "); field_queuingAllowed.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void AllocationOrRetentionPriority::set_implicit_omit() { if (priorityLevel().is_bound()) priorityLevel().set_implicit_omit(); if (pre__emptionCapability().is_bound()) pre__emptionCapability().set_implicit_omit(); if (pre__emptionVulnerability().is_bound()) pre__emptionVulnerability().set_implicit_omit(); if (queuingAllowed().is_bound()) queuingAllowed().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void AllocationOrRetentionPriority::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (50 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) priorityLevel().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pre__emptionCapability().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pre__emptionVulnerability().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) queuingAllowed().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "priorityLevel")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { priorityLevel().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "pre_emptionCapability")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pre__emptionCapability().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "pre_emptionVulnerability")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pre__emptionVulnerability().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "queuingAllowed")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { queuingAllowed().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.AllocationOrRetentionPriority: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.AllocationOrRetentionPriority"); } } void AllocationOrRetentionPriority::encode_text(Text_Buf& text_buf) const { field_priorityLevel.encode_text(text_buf); field_pre__emptionCapability.encode_text(text_buf); field_pre__emptionVulnerability.encode_text(text_buf); field_queuingAllowed.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void AllocationOrRetentionPriority::decode_text(Text_Buf& text_buf) { field_priorityLevel.decode_text(text_buf); field_pre__emptionCapability.decode_text(text_buf); field_pre__emptionVulnerability.decode_text(text_buf); field_queuingAllowed.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void AllocationOrRetentionPriority::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AllocationOrRetentionPriority::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* AllocationOrRetentionPriority::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("priorityLevel': "); new_tlv->add_TLV(field_priorityLevel.BER_encode_TLV(AllocationOrRetentionPriority_priorityLevel_descr_, p_coding)); ec_1.set_msg("pre_emptionCapability': "); new_tlv->add_TLV(field_pre__emptionCapability.BER_encode_TLV(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_coding)); ec_1.set_msg("pre_emptionVulnerability': "); new_tlv->add_TLV(field_pre__emptionVulnerability.BER_encode_TLV(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_coding)); ec_1.set_msg("queuingAllowed': "); new_tlv->add_TLV(field_queuingAllowed.BER_encode_TLV(AllocationOrRetentionPriority_queuingAllowed_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(AllocationOrRetentionPriority_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean AllocationOrRetentionPriority::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.AllocationOrRetentionPriority' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("priorityLevel': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_priorityLevel.BER_decode_TLV(AllocationOrRetentionPriority_priorityLevel_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("pre_emptionCapability': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_pre__emptionCapability.BER_decode_TLV(AllocationOrRetentionPriority_pre__emptionCapability_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("pre_emptionVulnerability': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_pre__emptionVulnerability.BER_decode_TLV(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("queuingAllowed': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_queuingAllowed.BER_decode_TLV(AllocationOrRetentionPriority_queuingAllowed_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(AllocationOrRetentionPriority_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int AllocationOrRetentionPriority::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.AllocationOrRetentionPriority."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "priorityLevel"); enc_len += field_priorityLevel.JSON_encode(AllocationOrRetentionPriority_priorityLevel_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "pre_emptionCapability"); enc_len += field_pre__emptionCapability.JSON_encode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "pre_emptionVulnerability"); enc_len += field_pre__emptionVulnerability.JSON_encode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "queuingAllowed"); enc_len += field_queuingAllowed.JSON_encode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int AllocationOrRetentionPriority::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean priorityLevel_found = FALSE; boolean pre__emptionCapability_found = FALSE; boolean pre__emptionVulnerability_found = FALSE; boolean queuingAllowed_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (13 == name_len && 0 == strncmp(fld_name, "priorityLevel", name_len)) { priorityLevel_found = TRUE; int ret_val = field_priorityLevel.JSON_decode(AllocationOrRetentionPriority_priorityLevel_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "priorityLevel"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (21 == name_len && 0 == strncmp(fld_name, "pre_emptionCapability", name_len)) { pre__emptionCapability_found = TRUE; int ret_val = field_pre__emptionCapability.JSON_decode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 21, "pre_emptionCapability"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (24 == name_len && 0 == strncmp(fld_name, "pre_emptionVulnerability", name_len)) { pre__emptionVulnerability_found = TRUE; int ret_val = field_pre__emptionVulnerability.JSON_decode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 24, "pre_emptionVulnerability"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "queuingAllowed", name_len)) { queuingAllowed_found = TRUE; int ret_val = field_queuingAllowed.JSON_decode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "queuingAllowed"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!priorityLevel_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "priorityLevel"); return JSON_ERROR_FATAL; } if (!pre__emptionCapability_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "pre_emptionCapability"); return JSON_ERROR_FATAL; } if (!pre__emptionVulnerability_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "pre_emptionVulnerability"); return JSON_ERROR_FATAL; } if (!queuingAllowed_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "queuingAllowed"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int AllocationOrRetentionPriority::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_priorityLevel.OER_encode(AllocationOrRetentionPriority_priorityLevel_descr_, p_buf); field_pre__emptionCapability.OER_encode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_buf); field_pre__emptionVulnerability.OER_encode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_buf); field_queuingAllowed.OER_encode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_buf); return 0; } int AllocationOrRetentionPriority::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_priorityLevel.OER_decode(AllocationOrRetentionPriority_priorityLevel_descr_, p_buf, p_oer); field_pre__emptionCapability.OER_decode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_buf, p_oer); field_pre__emptionVulnerability.OER_decode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_buf, p_oer); field_queuingAllowed.OER_decode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void AllocationOrRetentionPriority::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_priorityLevel.PER_encode(AllocationOrRetentionPriority_priorityLevel_descr_, p_buf, p_options); field_pre__emptionCapability.PER_encode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_buf, p_options); field_pre__emptionVulnerability.PER_encode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_buf, p_options); field_queuingAllowed.PER_encode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_buf, p_options); } void AllocationOrRetentionPriority::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_priorityLevel.PER_decode(AllocationOrRetentionPriority_priorityLevel_descr_, p_buf, p_options); field_pre__emptionCapability.PER_decode(AllocationOrRetentionPriority_pre__emptionCapability_descr_, p_buf, p_options); field_pre__emptionVulnerability.PER_decode(AllocationOrRetentionPriority_pre__emptionVulnerability_descr_, p_buf, p_options); field_queuingAllowed.PER_decode(AllocationOrRetentionPriority_queuingAllowed_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(AllocationOrRetentionPriority_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct AllocationOrRetentionPriority_template::single_value_struct { INTEGER_template field_priorityLevel; Pre__emptionCapability_template field_pre__emptionCapability; Pre__emptionVulnerability_template field_pre__emptionVulnerability; QueuingAllowed_template field_queuingAllowed; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template field_iE__Extensions; }; void AllocationOrRetentionPriority_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_priorityLevel = ANY_VALUE; single_value->field_pre__emptionCapability = ANY_VALUE; single_value->field_pre__emptionVulnerability = ANY_VALUE; single_value->field_queuingAllowed = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void AllocationOrRetentionPriority_template::copy_value(const AllocationOrRetentionPriority& other_value) { single_value = new single_value_struct; if (other_value.priorityLevel().is_bound()) { single_value->field_priorityLevel = other_value.priorityLevel(); } else { single_value->field_priorityLevel.clean_up(); } if (other_value.pre__emptionCapability().is_bound()) { single_value->field_pre__emptionCapability = other_value.pre__emptionCapability(); } else { single_value->field_pre__emptionCapability.clean_up(); } if (other_value.pre__emptionVulnerability().is_bound()) { single_value->field_pre__emptionVulnerability = other_value.pre__emptionVulnerability(); } else { single_value->field_pre__emptionVulnerability.clean_up(); } if (other_value.queuingAllowed().is_bound()) { single_value->field_queuingAllowed = other_value.queuingAllowed(); } else { single_value->field_queuingAllowed.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void AllocationOrRetentionPriority_template::copy_template(const AllocationOrRetentionPriority_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.priorityLevel().get_selection()) { single_value->field_priorityLevel = other_value.priorityLevel(); } else { single_value->field_priorityLevel.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.pre__emptionCapability().get_selection()) { single_value->field_pre__emptionCapability = other_value.pre__emptionCapability(); } else { single_value->field_pre__emptionCapability.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.pre__emptionVulnerability().get_selection()) { single_value->field_pre__emptionVulnerability = other_value.pre__emptionVulnerability(); } else { single_value->field_pre__emptionVulnerability.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.queuingAllowed().get_selection()) { single_value->field_queuingAllowed = other_value.queuingAllowed(); } else { single_value->field_queuingAllowed.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new AllocationOrRetentionPriority_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new AllocationOrRetentionPriority_template(*other_value.implication_.precondition); implication_.implied_template = new AllocationOrRetentionPriority_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.AllocationOrRetentionPriority."); break; } set_selection(other_value); } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template() { } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(const AllocationOrRetentionPriority& other_value) { copy_value(other_value); } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AllocationOrRetentionPriority&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.AllocationOrRetentionPriority from an unbound optional field."); } } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(AllocationOrRetentionPriority_template* p_precondition, AllocationOrRetentionPriority_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AllocationOrRetentionPriority_template::AllocationOrRetentionPriority_template(const AllocationOrRetentionPriority_template& other_value) : Base_Template() { copy_template(other_value); } AllocationOrRetentionPriority_template::~AllocationOrRetentionPriority_template() { clean_up(); } AllocationOrRetentionPriority_template& AllocationOrRetentionPriority_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AllocationOrRetentionPriority_template& AllocationOrRetentionPriority_template::operator=(const AllocationOrRetentionPriority& other_value) { clean_up(); copy_value(other_value); return *this; } AllocationOrRetentionPriority_template& AllocationOrRetentionPriority_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AllocationOrRetentionPriority&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.AllocationOrRetentionPriority."); } return *this; } AllocationOrRetentionPriority_template& AllocationOrRetentionPriority_template::operator=(const AllocationOrRetentionPriority_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AllocationOrRetentionPriority_template::match(const AllocationOrRetentionPriority& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.priorityLevel().is_bound()) return FALSE; if(!single_value->field_priorityLevel.match(other_value.priorityLevel(), legacy))return FALSE; if(!other_value.pre__emptionCapability().is_bound()) return FALSE; if(!single_value->field_pre__emptionCapability.match(other_value.pre__emptionCapability(), legacy))return FALSE; if(!other_value.pre__emptionVulnerability().is_bound()) return FALSE; if(!single_value->field_pre__emptionVulnerability.match(other_value.pre__emptionVulnerability(), legacy))return FALSE; if(!other_value.queuingAllowed().is_bound()) return FALSE; if(!single_value->field_queuingAllowed.match(other_value.queuingAllowed(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.AllocationOrRetentionPriority."); } return FALSE; } boolean AllocationOrRetentionPriority_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_priorityLevel.is_bound() || single_value->field_pre__emptionCapability.is_bound() || single_value->field_pre__emptionVulnerability.is_bound() || single_value->field_queuingAllowed.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean AllocationOrRetentionPriority_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_priorityLevel.is_value() && single_value->field_pre__emptionCapability.is_value() && single_value->field_pre__emptionVulnerability.is_value() && single_value->field_queuingAllowed.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void AllocationOrRetentionPriority_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } AllocationOrRetentionPriority AllocationOrRetentionPriority_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); AllocationOrRetentionPriority ret_val; if (single_value->field_priorityLevel.is_bound()) { ret_val.priorityLevel() = single_value->field_priorityLevel.valueof(); } if (single_value->field_pre__emptionCapability.is_bound()) { ret_val.pre__emptionCapability() = single_value->field_pre__emptionCapability.valueof(); } if (single_value->field_pre__emptionVulnerability.is_bound()) { ret_val.pre__emptionVulnerability() = single_value->field_pre__emptionVulnerability.valueof(); } if (single_value->field_queuingAllowed.is_bound()) { ret_val.queuingAllowed() = single_value->field_queuingAllowed.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void AllocationOrRetentionPriority_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.AllocationOrRetentionPriority."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AllocationOrRetentionPriority_template[list_length]; } AllocationOrRetentionPriority_template& AllocationOrRetentionPriority_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.AllocationOrRetentionPriority."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.AllocationOrRetentionPriority."); return value_list.list_value[list_index]; } INTEGER_template& AllocationOrRetentionPriority_template::priorityLevel() { set_specific(); return single_value->field_priorityLevel; } const INTEGER_template& AllocationOrRetentionPriority_template::priorityLevel() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field priorityLevel of a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); return single_value->field_priorityLevel; } Pre__emptionCapability_template& AllocationOrRetentionPriority_template::pre__emptionCapability() { set_specific(); return single_value->field_pre__emptionCapability; } const Pre__emptionCapability_template& AllocationOrRetentionPriority_template::pre__emptionCapability() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pre_emptionCapability of a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); return single_value->field_pre__emptionCapability; } Pre__emptionVulnerability_template& AllocationOrRetentionPriority_template::pre__emptionVulnerability() { set_specific(); return single_value->field_pre__emptionVulnerability; } const Pre__emptionVulnerability_template& AllocationOrRetentionPriority_template::pre__emptionVulnerability() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pre_emptionVulnerability of a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); return single_value->field_pre__emptionVulnerability; } QueuingAllowed_template& AllocationOrRetentionPriority_template::queuingAllowed() { set_specific(); return single_value->field_queuingAllowed; } const QueuingAllowed_template& AllocationOrRetentionPriority_template::queuingAllowed() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field queuingAllowed of a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); return single_value->field_queuingAllowed; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& AllocationOrRetentionPriority_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& AllocationOrRetentionPriority_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.AllocationOrRetentionPriority."); return single_value->field_iE__Extensions; } int AllocationOrRetentionPriority_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 4; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.AllocationOrRetentionPriority containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.AllocationOrRetentionPriority."); } return 0; } void AllocationOrRetentionPriority_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ priorityLevel := "); single_value->field_priorityLevel.log(); TTCN_Logger::log_event_str(", pre_emptionCapability := "); single_value->field_pre__emptionCapability.log(); TTCN_Logger::log_event_str(", pre_emptionVulnerability := "); single_value->field_pre__emptionVulnerability.log(); TTCN_Logger::log_event_str(", queuingAllowed := "); single_value->field_queuingAllowed.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void AllocationOrRetentionPriority_template::log_match(const AllocationOrRetentionPriority& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_priorityLevel.match(match_value.priorityLevel(), legacy)){ TTCN_Logger::log_logmatch_info(".priorityLevel"); single_value->field_priorityLevel.log_match(match_value.priorityLevel(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_pre__emptionCapability.match(match_value.pre__emptionCapability(), legacy)){ TTCN_Logger::log_logmatch_info(".pre_emptionCapability"); single_value->field_pre__emptionCapability.log_match(match_value.pre__emptionCapability(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_pre__emptionVulnerability.match(match_value.pre__emptionVulnerability(), legacy)){ TTCN_Logger::log_logmatch_info(".pre_emptionVulnerability"); single_value->field_pre__emptionVulnerability.log_match(match_value.pre__emptionVulnerability(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_queuingAllowed.match(match_value.queuingAllowed(), legacy)){ TTCN_Logger::log_logmatch_info(".queuingAllowed"); single_value->field_queuingAllowed.log_match(match_value.queuingAllowed(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ priorityLevel := "); single_value->field_priorityLevel.log_match(match_value.priorityLevel(), legacy); TTCN_Logger::log_event_str(", pre_emptionCapability := "); single_value->field_pre__emptionCapability.log_match(match_value.pre__emptionCapability(), legacy); TTCN_Logger::log_event_str(", pre_emptionVulnerability := "); single_value->field_pre__emptionVulnerability.log_match(match_value.pre__emptionVulnerability(), legacy); TTCN_Logger::log_event_str(", queuingAllowed := "); single_value->field_queuingAllowed.log_match(match_value.queuingAllowed(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void AllocationOrRetentionPriority_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (priorityLevel().is_bound()) priorityLevel().set_implicit_omit(); if (pre__emptionCapability().is_bound()) pre__emptionCapability().set_implicit_omit(); if (pre__emptionVulnerability().is_bound()) pre__emptionVulnerability().set_implicit_omit(); if (queuingAllowed().is_bound()) queuingAllowed().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void AllocationOrRetentionPriority_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_priorityLevel.encode_text(text_buf); single_value->field_pre__emptionCapability.encode_text(text_buf); single_value->field_pre__emptionVulnerability.encode_text(text_buf); single_value->field_queuingAllowed.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.AllocationOrRetentionPriority."); } } void AllocationOrRetentionPriority_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_priorityLevel.decode_text(text_buf); single_value->field_pre__emptionCapability.decode_text(text_buf); single_value->field_pre__emptionVulnerability.decode_text(text_buf); single_value->field_queuingAllowed.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new AllocationOrRetentionPriority_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.AllocationOrRetentionPriority."); } } void AllocationOrRetentionPriority_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { AllocationOrRetentionPriority_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) priorityLevel().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pre__emptionCapability().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pre__emptionVulnerability().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) queuingAllowed().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "priorityLevel")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { priorityLevel().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "pre_emptionCapability")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pre__emptionCapability().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "pre_emptionVulnerability")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { pre__emptionVulnerability().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "queuingAllowed")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { queuingAllowed().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.AllocationOrRetentionPriority: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { AllocationOrRetentionPriority_template* precondition = new AllocationOrRetentionPriority_template; precondition->set_param(*param.get_elem(0)); AllocationOrRetentionPriority_template* implied_template = new AllocationOrRetentionPriority_template; implied_template->set_param(*param.get_elem(1)); *this = AllocationOrRetentionPriority_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.AllocationOrRetentionPriority"); } is_ifpresent = param.get_ifpresent(); } void AllocationOrRetentionPriority_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_priorityLevel.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); single_value->field_pre__emptionCapability.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); single_value->field_pre__emptionVulnerability.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); single_value->field_queuingAllowed.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.AllocationOrRetentionPriority"); } boolean AllocationOrRetentionPriority_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AllocationOrRetentionPriority_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst3"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst3_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst3"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst3_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_altMaxBitrateInf, const OPTIONAL< Alt__RAB__Parameter__GuaranteedBitrateInf >& par_altGuaranteedBitRateInf, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 >& par_iE__Extensions) : field_altMaxBitrateInf(par_altMaxBitrateInf), field_altGuaranteedBitRateInf(par_altGuaranteedBitRateInf), field_iE__Extensions(par_iE__Extensions) { } Alt__RAB__Parameters::Alt__RAB__Parameters(const Alt__RAB__Parameters& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameters."); if (other_value.altMaxBitrateInf().is_bound()) field_altMaxBitrateInf = other_value.altMaxBitrateInf(); else field_altMaxBitrateInf.clean_up(); if (other_value.altGuaranteedBitRateInf().is_bound()) field_altGuaranteedBitRateInf = other_value.altGuaranteedBitRateInf(); else field_altGuaranteedBitRateInf.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void Alt__RAB__Parameters::clean_up() { field_altMaxBitrateInf.clean_up(); field_altGuaranteedBitRateInf.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameters::get_descriptor() const { return &Alt__RAB__Parameters_descr_; } Alt__RAB__Parameters& Alt__RAB__Parameters::operator=(const Alt__RAB__Parameters& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameters."); if (other_value.altMaxBitrateInf().is_bound()) field_altMaxBitrateInf = other_value.altMaxBitrateInf(); else field_altMaxBitrateInf.clean_up(); if (other_value.altGuaranteedBitRateInf().is_bound()) field_altGuaranteedBitRateInf = other_value.altGuaranteedBitRateInf(); else field_altGuaranteedBitRateInf.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean Alt__RAB__Parameters::operator==(const Alt__RAB__Parameters& other_value) const { return field_altMaxBitrateInf==other_value.field_altMaxBitrateInf && field_altGuaranteedBitRateInf==other_value.field_altGuaranteedBitRateInf && field_iE__Extensions==other_value.field_iE__Extensions; } boolean Alt__RAB__Parameters::is_bound() const { return (OPTIONAL_OMIT == field_altMaxBitrateInf.get_selection() || field_altMaxBitrateInf.is_bound()) || (OPTIONAL_OMIT == field_altGuaranteedBitRateInf.get_selection() || field_altGuaranteedBitRateInf.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameters::is_value() const { return (OPTIONAL_OMIT == field_altMaxBitrateInf.get_selection() || field_altMaxBitrateInf.is_value()) && (OPTIONAL_OMIT == field_altGuaranteedBitRateInf.get_selection() || field_altGuaranteedBitRateInf.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int Alt__RAB__Parameters::size_of() const { int ret_val = 0; if (field_altMaxBitrateInf.ispresent()) ret_val++; if (field_altGuaranteedBitRateInf.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameters::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altMaxBitrateInf := "); field_altMaxBitrateInf.log(); TTCN_Logger::log_event_str(", altGuaranteedBitRateInf := "); field_altGuaranteedBitRateInf.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameters::set_implicit_omit() { if (!altMaxBitrateInf().is_bound()) altMaxBitrateInf() = OMIT_VALUE; else altMaxBitrateInf().set_implicit_omit(); if (!altGuaranteedBitRateInf().is_bound()) altGuaranteedBitRateInf() = OMIT_VALUE; else altGuaranteedBitRateInf().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameters::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrateInf().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitRateInf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrateInf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrateInf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitRateInf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitRateInf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameters: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameters"); } } void Alt__RAB__Parameters::encode_text(Text_Buf& text_buf) const { field_altMaxBitrateInf.encode_text(text_buf); field_altGuaranteedBitRateInf.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void Alt__RAB__Parameters::decode_text(Text_Buf& text_buf) { field_altMaxBitrateInf.decode_text(text_buf); field_altGuaranteedBitRateInf.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void Alt__RAB__Parameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameters::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altMaxBitrateInf': "); new_tlv->add_TLV(field_altMaxBitrateInf.BER_encode_TLV(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_coding)); ec_1.set_msg("altGuaranteedBitRateInf': "); new_tlv->add_TLV(field_altGuaranteedBitRateInf.BER_encode_TLV(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(Alt__RAB__Parameters_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameters::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameters' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altMaxBitrateInf': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altMaxBitrateInf=OMIT_VALUE; else { field_altMaxBitrateInf.BER_decode_TLV(Alt__RAB__Parameters_altMaxBitrateInf_descr_, tmp_tlv, L_form); if(field_altMaxBitrateInf.ispresent()) tlv_present=FALSE; } ec_2.set_msg("altGuaranteedBitRateInf': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altGuaranteedBitRateInf=OMIT_VALUE; else { field_altGuaranteedBitRateInf.BER_decode_TLV(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, tmp_tlv, L_form); if(field_altGuaranteedBitRateInf.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(Alt__RAB__Parameters_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameters::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameters."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); if (field_altMaxBitrateInf.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altMaxBitrateInf"); enc_len += field_altMaxBitrateInf.JSON_encode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_tok, FALSE); } if (field_altGuaranteedBitRateInf.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altGuaranteedBitRateInf"); enc_len += field_altGuaranteedBitRateInf.JSON_encode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(Alt__RAB__Parameters_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameters::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altMaxBitrateInf_found = FALSE; boolean altGuaranteedBitRateInf_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (16 == name_len && 0 == strncmp(fld_name, "altMaxBitrateInf", name_len)) { altMaxBitrateInf_found = TRUE; int ret_val = field_altMaxBitrateInf.JSON_decode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 16, "altMaxBitrateInf"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (23 == name_len && 0 == strncmp(fld_name, "altGuaranteedBitRateInf", name_len)) { altGuaranteedBitRateInf_found = TRUE; int ret_val = field_altGuaranteedBitRateInf.JSON_decode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 23, "altGuaranteedBitRateInf"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(Alt__RAB__Parameters_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altMaxBitrateInf_found) { field_altMaxBitrateInf = OMIT_VALUE; } if (!altGuaranteedBitRateInf_found) { field_altGuaranteedBitRateInf = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameters::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altMaxBitrateInf.is_present()) { c |= 64; } if (field_altGuaranteedBitRateInf.is_present()) { c |= 32; } if (field_iE__Extensions.is_present()) { c |= 16; } p_buf.put_c(c); if (field_altMaxBitrateInf.is_present()) field_altMaxBitrateInf.OER_encode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_buf); if (field_altGuaranteedBitRateInf.is_present()) field_altGuaranteedBitRateInf.OER_encode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(Alt__RAB__Parameters_iE__Extensions_descr_, p_buf); return 0; } int Alt__RAB__Parameters::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } if (uc[0] & 64) field_altMaxBitrateInf.OER_decode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_buf, p_oer); else field_altMaxBitrateInf = OMIT_VALUE; if (uc[0] & 32) field_altGuaranteedBitRateInf.OER_decode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_buf, p_oer); else field_altGuaranteedBitRateInf = OMIT_VALUE; if (uc[0] & 16) field_iE__Extensions.OER_decode(Alt__RAB__Parameters_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameters::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altMaxBitrateInf_present = field_altMaxBitrateInf.is_present(); p_buf.PER_put_bit(field_altMaxBitrateInf_present); boolean field_altGuaranteedBitRateInf_present = field_altGuaranteedBitRateInf.is_present(); p_buf.PER_put_bit(field_altGuaranteedBitRateInf_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); if (field_altMaxBitrateInf_present) field_altMaxBitrateInf.PER_encode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_buf, p_options); if (field_altGuaranteedBitRateInf_present) field_altGuaranteedBitRateInf.PER_encode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(Alt__RAB__Parameters_iE__Extensions_descr_, p_buf, p_options); } void Alt__RAB__Parameters::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altMaxBitrateInf_present = p_buf.PER_get_bit(); boolean field_altGuaranteedBitRateInf_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); if (field_altMaxBitrateInf_present) field_altMaxBitrateInf.PER_decode(Alt__RAB__Parameters_altMaxBitrateInf_descr_, p_buf, p_options); else field_altMaxBitrateInf = OMIT_VALUE; if (field_altGuaranteedBitRateInf_present) field_altGuaranteedBitRateInf.PER_decode(Alt__RAB__Parameters_altGuaranteedBitRateInf_descr_, p_buf, p_options); else field_altGuaranteedBitRateInf = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(Alt__RAB__Parameters_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameters_template::single_value_struct { Alt__RAB__Parameter__MaxBitrateInf_template field_altMaxBitrateInf; Alt__RAB__Parameter__GuaranteedBitrateInf_template field_altGuaranteedBitRateInf; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template field_iE__Extensions; }; void Alt__RAB__Parameters_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altMaxBitrateInf = ANY_OR_OMIT; single_value->field_altGuaranteedBitRateInf = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void Alt__RAB__Parameters_template::copy_value(const Alt__RAB__Parameters& other_value) { single_value = new single_value_struct; if (other_value.altMaxBitrateInf().is_bound()) { if (other_value.altMaxBitrateInf().ispresent()) single_value->field_altMaxBitrateInf = other_value.altMaxBitrateInf()(); else single_value->field_altMaxBitrateInf = OMIT_VALUE; } else { single_value->field_altMaxBitrateInf.clean_up(); } if (other_value.altGuaranteedBitRateInf().is_bound()) { if (other_value.altGuaranteedBitRateInf().ispresent()) single_value->field_altGuaranteedBitRateInf = other_value.altGuaranteedBitRateInf()(); else single_value->field_altGuaranteedBitRateInf = OMIT_VALUE; } else { single_value->field_altGuaranteedBitRateInf.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameters_template::copy_template(const Alt__RAB__Parameters_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altMaxBitrateInf().get_selection()) { single_value->field_altMaxBitrateInf = other_value.altMaxBitrateInf(); } else { single_value->field_altMaxBitrateInf.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altGuaranteedBitRateInf().get_selection()) { single_value->field_altGuaranteedBitRateInf = other_value.altGuaranteedBitRateInf(); } else { single_value->field_altGuaranteedBitRateInf.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameters_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameters_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameters."); break; } set_selection(other_value); } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template() { } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(const Alt__RAB__Parameters& other_value) { copy_value(other_value); } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameters from an unbound optional field."); } } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(Alt__RAB__Parameters_template* p_precondition, Alt__RAB__Parameters_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameters_template::Alt__RAB__Parameters_template(const Alt__RAB__Parameters_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameters_template::~Alt__RAB__Parameters_template() { clean_up(); } Alt__RAB__Parameters_template& Alt__RAB__Parameters_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameters_template& Alt__RAB__Parameters_template::operator=(const Alt__RAB__Parameters& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameters_template& Alt__RAB__Parameters_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameters."); } return *this; } Alt__RAB__Parameters_template& Alt__RAB__Parameters_template::operator=(const Alt__RAB__Parameters_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameters_template::match(const Alt__RAB__Parameters& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altMaxBitrateInf().is_bound()) return FALSE; if((other_value.altMaxBitrateInf().ispresent() ? !single_value->field_altMaxBitrateInf.match((const Alt__RAB__Parameter__MaxBitrateInf&)other_value.altMaxBitrateInf(), legacy) : !single_value->field_altMaxBitrateInf.match_omit(legacy)))return FALSE; if(!other_value.altGuaranteedBitRateInf().is_bound()) return FALSE; if((other_value.altGuaranteedBitRateInf().ispresent() ? !single_value->field_altGuaranteedBitRateInf.match((const Alt__RAB__Parameter__GuaranteedBitrateInf&)other_value.altGuaranteedBitRateInf(), legacy) : !single_value->field_altGuaranteedBitRateInf.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameters."); } return FALSE; } boolean Alt__RAB__Parameters_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return (single_value->field_altMaxBitrateInf.is_omit() || single_value->field_altMaxBitrateInf.is_bound()) || (single_value->field_altGuaranteedBitRateInf.is_omit() || single_value->field_altGuaranteedBitRateInf.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameters_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return (single_value->field_altMaxBitrateInf.is_omit() || single_value->field_altMaxBitrateInf.is_value()) && (single_value->field_altGuaranteedBitRateInf.is_omit() || single_value->field_altGuaranteedBitRateInf.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void Alt__RAB__Parameters_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameters Alt__RAB__Parameters_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameters."); Alt__RAB__Parameters ret_val; if (single_value->field_altMaxBitrateInf.is_omit()) ret_val.altMaxBitrateInf() = OMIT_VALUE; else if (single_value->field_altMaxBitrateInf.is_bound()) { ret_val.altMaxBitrateInf() = single_value->field_altMaxBitrateInf.valueof(); } if (single_value->field_altGuaranteedBitRateInf.is_omit()) ret_val.altGuaranteedBitRateInf() = OMIT_VALUE; else if (single_value->field_altGuaranteedBitRateInf.is_bound()) { ret_val.altGuaranteedBitRateInf() = single_value->field_altGuaranteedBitRateInf.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void Alt__RAB__Parameters_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameters."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameters_template[list_length]; } Alt__RAB__Parameters_template& Alt__RAB__Parameters_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameters."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameters."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameters_template::altMaxBitrateInf() { set_specific(); return single_value->field_altMaxBitrateInf; } const Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameters_template::altMaxBitrateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altMaxBitrateInf of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameters."); return single_value->field_altMaxBitrateInf; } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameters_template::altGuaranteedBitRateInf() { set_specific(); return single_value->field_altGuaranteedBitRateInf; } const Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameters_template::altGuaranteedBitRateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altGuaranteedBitRateInf of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameters."); return single_value->field_altGuaranteedBitRateInf; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& Alt__RAB__Parameters_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& Alt__RAB__Parameters_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameters."); return single_value->field_iE__Extensions; } int Alt__RAB__Parameters_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 0; if (single_value->field_altMaxBitrateInf.is_present()) ret_val++; if (single_value->field_altGuaranteedBitRateInf.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameters containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameters."); } return 0; } void Alt__RAB__Parameters_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altMaxBitrateInf := "); single_value->field_altMaxBitrateInf.log(); TTCN_Logger::log_event_str(", altGuaranteedBitRateInf := "); single_value->field_altGuaranteedBitRateInf.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameters_template::log_match(const Alt__RAB__Parameters& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if (match_value.altMaxBitrateInf().ispresent()){ if(!single_value->field_altMaxBitrateInf.match(match_value.altMaxBitrateInf(), legacy)){ TTCN_Logger::log_logmatch_info(".altMaxBitrateInf"); single_value->field_altMaxBitrateInf.log_match(match_value.altMaxBitrateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altMaxBitrateInf.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altMaxBitrateInf := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altMaxBitrateInf.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.altGuaranteedBitRateInf().ispresent()){ if(!single_value->field_altGuaranteedBitRateInf.match(match_value.altGuaranteedBitRateInf(), legacy)){ TTCN_Logger::log_logmatch_info(".altGuaranteedBitRateInf"); single_value->field_altGuaranteedBitRateInf.log_match(match_value.altGuaranteedBitRateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altGuaranteedBitRateInf.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altGuaranteedBitRateInf := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altGuaranteedBitRateInf.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altMaxBitrateInf := "); if (match_value.altMaxBitrateInf().ispresent()) { single_value->field_altMaxBitrateInf.log_match(match_value.altMaxBitrateInf(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altMaxBitrateInf.log(); if (single_value->field_altMaxBitrateInf.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", altGuaranteedBitRateInf := "); if (match_value.altGuaranteedBitRateInf().ispresent()) { single_value->field_altGuaranteedBitRateInf.log_match(match_value.altGuaranteedBitRateInf(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altGuaranteedBitRateInf.log(); if (single_value->field_altGuaranteedBitRateInf.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameters_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (!altMaxBitrateInf().is_bound()) altMaxBitrateInf() = OMIT_VALUE; else altMaxBitrateInf().set_implicit_omit(); if (!altGuaranteedBitRateInf().is_bound()) altGuaranteedBitRateInf() = OMIT_VALUE; else altGuaranteedBitRateInf().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameters_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altMaxBitrateInf.encode_text(text_buf); single_value->field_altGuaranteedBitRateInf.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameters."); } } void Alt__RAB__Parameters_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altMaxBitrateInf.decode_text(text_buf); single_value->field_altGuaranteedBitRateInf.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameters."); } } void Alt__RAB__Parameters_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameters_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrateInf().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitRateInf().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrateInf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrateInf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitRateInf")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitRateInf().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameters: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameters_template* precondition = new Alt__RAB__Parameters_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameters_template* implied_template = new Alt__RAB__Parameters_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameters_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameters"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altMaxBitrateInf.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameters"); single_value->field_altGuaranteedBitRateInf.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameters"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameters"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameters"); } boolean Alt__RAB__Parameters_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameters_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean Alt__RAB__Parameter__MaxBitrateType::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return enum_value > other_value; } boolean Alt__RAB__Parameter__MaxBitrateType::operator>(const Alt__RAB__Parameter__MaxBitrateType& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return enum_value > other_value.enum_value; } const char *Alt__RAB__Parameter__MaxBitrateType::enum_to_str(enum_type enum_par) { switch (enum_par) { case unspecified: return "unspecified"; case value__range: return "value_range"; case discrete__values: return "discrete_values"; default: return ""; } } Alt__RAB__Parameter__MaxBitrateType::enum_type Alt__RAB__Parameter__MaxBitrateType::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "unspecified")) return unspecified; if (!strcmp(str_par, "value_range")) return value__range; if (!strcmp(str_par, "discrete_values")) return discrete__values; } return UNKNOWN_VALUE; } boolean Alt__RAB__Parameter__MaxBitrateType::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: return TRUE; default: return FALSE; } } int Alt__RAB__Parameter__MaxBitrateType::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int Alt__RAB__Parameter__MaxBitrateType::enum2int(const Alt__RAB__Parameter__MaxBitrateType& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void Alt__RAB__Parameter__MaxBitrateType::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", int_val); enum_value = (enum_type)int_val; } Alt__RAB__Parameter__MaxBitrateType::operator Alt__RAB__Parameter__MaxBitrateType::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return enum_value; } void Alt__RAB__Parameter__MaxBitrateType::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void Alt__RAB__Parameter__MaxBitrateType::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } } void Alt__RAB__Parameter__MaxBitrateType::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); text_buf.push_int(enum_value); } void Alt__RAB__Parameter__MaxBitrateType::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", enum_value); } void Alt__RAB__Parameter__MaxBitrateType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__MaxBitrateType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__MaxBitrateType::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__MaxBitrateType::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int Alt__RAB__Parameter__MaxBitrateType::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int Alt__RAB__Parameter__MaxBitrateType::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = unspecified; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__MaxBitrateType::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int Alt__RAB__Parameter__MaxBitrateType::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void Alt__RAB__Parameter__MaxBitrateType::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case unspecified: enc_val = 0; ext_bit = FALSE; break; case value__range: enc_val = 1; ext_bit = FALSE; break; case discrete__values: enc_val = 2; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 2); } void Alt__RAB__Parameter__MaxBitrateType::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = unspecified; break; case 1: enum_value = value__range; break; case 2: enum_value = discrete__values; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", dec_int); break; } } void Alt__RAB__Parameter__MaxBitrateType_template::copy_template(const Alt__RAB__Parameter__MaxBitrateType_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__MaxBitrateType_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__MaxBitrateType_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__MaxBitrateType_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template() { } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!Alt__RAB__Parameter__MaxBitrateType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType with unknown numeric value %d.", other_value); single_value = (Alt__RAB__Parameter__MaxBitrateType::enum_type)other_value; } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(Alt__RAB__Parameter__MaxBitrateType::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(const Alt__RAB__Parameter__MaxBitrateType& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == Alt__RAB__Parameter__MaxBitrateType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); single_value = other_value.enum_value; } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__MaxBitrateType::enum_type)(const Alt__RAB__Parameter__MaxBitrateType&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType from an unbound optional field."); } } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(Alt__RAB__Parameter__MaxBitrateType_template* p_precondition, Alt__RAB__Parameter__MaxBitrateType_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__MaxBitrateType_template::Alt__RAB__Parameter__MaxBitrateType_template(const Alt__RAB__Parameter__MaxBitrateType_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__MaxBitrateType_template::~Alt__RAB__Parameter__MaxBitrateType_template() { clean_up(); } boolean Alt__RAB__Parameter__MaxBitrateType_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean Alt__RAB__Parameter__MaxBitrateType_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != Alt__RAB__Parameter__MaxBitrateType::UNBOUND_VALUE; } void Alt__RAB__Parameter__MaxBitrateType_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(int other_value) { if (!Alt__RAB__Parameter__MaxBitrateType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__MaxBitrateType::enum_type)other_value; return *this; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(Alt__RAB__Parameter__MaxBitrateType::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(const Alt__RAB__Parameter__MaxBitrateType& other_value) { if (other_value.enum_value == Alt__RAB__Parameter__MaxBitrateType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__MaxBitrateType::enum_type)(const Alt__RAB__Parameter__MaxBitrateType&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } return *this; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::operator=(const Alt__RAB__Parameter__MaxBitrateType_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__MaxBitrateType_template::match(Alt__RAB__Parameter__MaxBitrateType::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } return FALSE; } boolean Alt__RAB__Parameter__MaxBitrateType_template::match(const Alt__RAB__Parameter__MaxBitrateType& other_value, boolean) const { if (other_value.enum_value == Alt__RAB__Parameter__MaxBitrateType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType with an unbound value."); return match(other_value.enum_value); } Alt__RAB__Parameter__MaxBitrateType::enum_type Alt__RAB__Parameter__MaxBitrateType_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return single_value; } void Alt__RAB__Parameter__MaxBitrateType_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__MaxBitrateType_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateType_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__MaxBitrateType_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(Alt__RAB__Parameter__MaxBitrateType::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__MaxBitrateType_template::log_match(const Alt__RAB__Parameter__MaxBitrateType& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void Alt__RAB__Parameter__MaxBitrateType_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } } void Alt__RAB__Parameter__MaxBitrateType_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (Alt__RAB__Parameter__MaxBitrateType::enum_type)text_buf.pull_int().get_val(); if (!Alt__RAB__Parameter__MaxBitrateType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__MaxBitrateType_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } } boolean Alt__RAB__Parameter__MaxBitrateType_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__MaxBitrateType_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__MaxBitrateType_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { Alt__RAB__Parameter__MaxBitrateType::enum_type enum_val = Alt__RAB__Parameter__MaxBitrateType::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!Alt__RAB__Parameter__MaxBitrateType::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__MaxBitrateType_template* precondition = new Alt__RAB__Parameter__MaxBitrateType_template; precondition->set_param(*m_p->get_elem(0)); Alt__RAB__Parameter__MaxBitrateType_template* implied_template = new Alt__RAB__Parameter__MaxBitrateType_template; implied_template->set_param(*m_p->get_elem(1)); *this = Alt__RAB__Parameter__MaxBitrateType_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__MaxBitrateType_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateType"); } Alt__RAB__Parameter__MaxBitrateInf::Alt__RAB__Parameter__MaxBitrateInf() { } Alt__RAB__Parameter__MaxBitrateInf::Alt__RAB__Parameter__MaxBitrateInf(const Alt__RAB__Parameter__MaxBitrateType& par_altMaxBitrateType, const OPTIONAL< Alt__RAB__Parameter__MaxBitrates >& par_altMaxBitrates) : field_altMaxBitrateType(par_altMaxBitrateType), field_altMaxBitrates(par_altMaxBitrates) { } Alt__RAB__Parameter__MaxBitrateInf::Alt__RAB__Parameter__MaxBitrateInf(const Alt__RAB__Parameter__MaxBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); if (other_value.altMaxBitrateType().is_bound()) field_altMaxBitrateType = other_value.altMaxBitrateType(); else field_altMaxBitrateType.clean_up(); if (other_value.altMaxBitrates().is_bound()) field_altMaxBitrates = other_value.altMaxBitrates(); else field_altMaxBitrates.clean_up(); } void Alt__RAB__Parameter__MaxBitrateInf::clean_up() { field_altMaxBitrateType.clean_up(); field_altMaxBitrates.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__MaxBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__MaxBitrateInf_descr_; } Alt__RAB__Parameter__MaxBitrateInf& Alt__RAB__Parameter__MaxBitrateInf::operator=(const Alt__RAB__Parameter__MaxBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); if (other_value.altMaxBitrateType().is_bound()) field_altMaxBitrateType = other_value.altMaxBitrateType(); else field_altMaxBitrateType.clean_up(); if (other_value.altMaxBitrates().is_bound()) field_altMaxBitrates = other_value.altMaxBitrates(); else field_altMaxBitrates.clean_up(); } return *this; } boolean Alt__RAB__Parameter__MaxBitrateInf::operator==(const Alt__RAB__Parameter__MaxBitrateInf& other_value) const { return field_altMaxBitrateType==other_value.field_altMaxBitrateType && field_altMaxBitrates==other_value.field_altMaxBitrates; } boolean Alt__RAB__Parameter__MaxBitrateInf::is_bound() const { return (field_altMaxBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altMaxBitrates.get_selection() || field_altMaxBitrates.is_bound()); } boolean Alt__RAB__Parameter__MaxBitrateInf::is_value() const { return field_altMaxBitrateType.is_value() && (OPTIONAL_OMIT == field_altMaxBitrates.get_selection() || field_altMaxBitrates.is_value()); } int Alt__RAB__Parameter__MaxBitrateInf::size_of() const { int ret_val = 1; if (field_altMaxBitrates.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__MaxBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altMaxBitrateType := "); field_altMaxBitrateType.log(); TTCN_Logger::log_event_str(", altMaxBitrates := "); field_altMaxBitrates.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__MaxBitrateInf::set_implicit_omit() { if (altMaxBitrateType().is_bound()) altMaxBitrateType().set_implicit_omit(); if (!altMaxBitrates().is_bound()) altMaxBitrates() = OMIT_VALUE; else altMaxBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__MaxBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf"); } } void Alt__RAB__Parameter__MaxBitrateInf::encode_text(Text_Buf& text_buf) const { field_altMaxBitrateType.encode_text(text_buf); field_altMaxBitrates.encode_text(text_buf); } void Alt__RAB__Parameter__MaxBitrateInf::decode_text(Text_Buf& text_buf) { field_altMaxBitrateType.decode_text(text_buf); field_altMaxBitrates.decode_text(text_buf); } void Alt__RAB__Parameter__MaxBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__MaxBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__MaxBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altMaxBitrateType': "); new_tlv->add_TLV(field_altMaxBitrateType.BER_encode_TLV(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_coding)); ec_1.set_msg("altMaxBitrates': "); new_tlv->add_TLV(field_altMaxBitrates.BER_encode_TLV(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__MaxBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altMaxBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altMaxBitrateType.BER_decode_TLV(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altMaxBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altMaxBitrates=OMIT_VALUE; else { field_altMaxBitrates.BER_decode_TLV(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, tmp_tlv, L_form); if(field_altMaxBitrates.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__MaxBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altMaxBitrateType"); enc_len += field_altMaxBitrateType.JSON_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_tok, FALSE); } if (field_altMaxBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altMaxBitrates"); enc_len += field_altMaxBitrates.JSON_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__MaxBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altMaxBitrateType_found = FALSE; boolean altMaxBitrates_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (17 == name_len && 0 == strncmp(fld_name, "altMaxBitrateType", name_len)) { altMaxBitrateType_found = TRUE; int ret_val = field_altMaxBitrateType.JSON_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 17, "altMaxBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "altMaxBitrates", name_len)) { altMaxBitrates_found = TRUE; int ret_val = field_altMaxBitrates.JSON_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "altMaxBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altMaxBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altMaxBitrateType"); return JSON_ERROR_FATAL; } if (!altMaxBitrates_found) { field_altMaxBitrates = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__MaxBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altMaxBitrates.is_present()) { c |= 64; } p_buf.put_c(c); field_altMaxBitrateType.OER_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_buf); if (field_altMaxBitrates.is_present()) field_altMaxBitrates.OER_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_buf); return 0; } int Alt__RAB__Parameter__MaxBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altMaxBitrateType.OER_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altMaxBitrates.OER_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_buf, p_oer); else field_altMaxBitrates = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__MaxBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altMaxBitrates_present = field_altMaxBitrates.is_present(); p_buf.PER_put_bit(field_altMaxBitrates_present); field_altMaxBitrateType.PER_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_buf, p_options); if (field_altMaxBitrates_present) field_altMaxBitrates.PER_encode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_buf, p_options); } void Alt__RAB__Parameter__MaxBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altMaxBitrates_present = p_buf.PER_get_bit(); field_altMaxBitrateType.PER_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrateType_descr_, p_buf, p_options); if (field_altMaxBitrates_present) field_altMaxBitrates.PER_decode(Alt__RAB__Parameter__MaxBitrateInf_altMaxBitrates_descr_, p_buf, p_options); else field_altMaxBitrates = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__MaxBitrateInf_template::single_value_struct { Alt__RAB__Parameter__MaxBitrateType_template field_altMaxBitrateType; Alt__RAB__Parameter__MaxBitrates_template field_altMaxBitrates; }; void Alt__RAB__Parameter__MaxBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altMaxBitrateType = ANY_VALUE; single_value->field_altMaxBitrates = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__MaxBitrateInf_template::copy_value(const Alt__RAB__Parameter__MaxBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altMaxBitrateType().is_bound()) { single_value->field_altMaxBitrateType = other_value.altMaxBitrateType(); } else { single_value->field_altMaxBitrateType.clean_up(); } if (other_value.altMaxBitrates().is_bound()) { if (other_value.altMaxBitrates().ispresent()) single_value->field_altMaxBitrates = other_value.altMaxBitrates()(); else single_value->field_altMaxBitrates = OMIT_VALUE; } else { single_value->field_altMaxBitrates.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__MaxBitrateInf_template::copy_template(const Alt__RAB__Parameter__MaxBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altMaxBitrateType().get_selection()) { single_value->field_altMaxBitrateType = other_value.altMaxBitrateType(); } else { single_value->field_altMaxBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altMaxBitrates().get_selection()) { single_value->field_altMaxBitrates = other_value.altMaxBitrates(); } else { single_value->field_altMaxBitrates.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__MaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__MaxBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__MaxBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template() { } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(const Alt__RAB__Parameter__MaxBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__MaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(Alt__RAB__Parameter__MaxBitrateInf_template* p_precondition, Alt__RAB__Parameter__MaxBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__MaxBitrateInf_template::Alt__RAB__Parameter__MaxBitrateInf_template(const Alt__RAB__Parameter__MaxBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__MaxBitrateInf_template::~Alt__RAB__Parameter__MaxBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameter__MaxBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameter__MaxBitrateInf_template::operator=(const Alt__RAB__Parameter__MaxBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameter__MaxBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__MaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); } return *this; } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameter__MaxBitrateInf_template::operator=(const Alt__RAB__Parameter__MaxBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__MaxBitrateInf_template::match(const Alt__RAB__Parameter__MaxBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altMaxBitrateType().is_bound()) return FALSE; if(!single_value->field_altMaxBitrateType.match(other_value.altMaxBitrateType(), legacy))return FALSE; if(!other_value.altMaxBitrates().is_bound()) return FALSE; if((other_value.altMaxBitrates().ispresent() ? !single_value->field_altMaxBitrates.match((const Alt__RAB__Parameter__MaxBitrates&)other_value.altMaxBitrates(), legacy) : !single_value->field_altMaxBitrates.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__MaxBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altMaxBitrateType.is_bound() || (single_value->field_altMaxBitrates.is_omit() || single_value->field_altMaxBitrates.is_bound()); } boolean Alt__RAB__Parameter__MaxBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altMaxBitrateType.is_value() && (single_value->field_altMaxBitrates.is_omit() || single_value->field_altMaxBitrates.is_value()); } void Alt__RAB__Parameter__MaxBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__MaxBitrateInf Alt__RAB__Parameter__MaxBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); Alt__RAB__Parameter__MaxBitrateInf ret_val; if (single_value->field_altMaxBitrateType.is_bound()) { ret_val.altMaxBitrateType() = single_value->field_altMaxBitrateType.valueof(); } if (single_value->field_altMaxBitrates.is_omit()) ret_val.altMaxBitrates() = OMIT_VALUE; else if (single_value->field_altMaxBitrates.is_bound()) { ret_val.altMaxBitrates() = single_value->field_altMaxBitrates.valueof(); } return ret_val; } void Alt__RAB__Parameter__MaxBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__MaxBitrateInf_template[list_length]; } Alt__RAB__Parameter__MaxBitrateInf_template& Alt__RAB__Parameter__MaxBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateInf_template::altMaxBitrateType() { set_specific(); return single_value->field_altMaxBitrateType; } const Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__MaxBitrateInf_template::altMaxBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altMaxBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); return single_value->field_altMaxBitrateType; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrateInf_template::altMaxBitrates() { set_specific(); return single_value->field_altMaxBitrates; } const Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrateInf_template::altMaxBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altMaxBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); return single_value->field_altMaxBitrates; } int Alt__RAB__Parameter__MaxBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altMaxBitrates.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); } return 0; } void Alt__RAB__Parameter__MaxBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altMaxBitrateType := "); single_value->field_altMaxBitrateType.log(); TTCN_Logger::log_event_str(", altMaxBitrates := "); single_value->field_altMaxBitrates.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__MaxBitrateInf_template::log_match(const Alt__RAB__Parameter__MaxBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altMaxBitrateType.match(match_value.altMaxBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altMaxBitrateType"); single_value->field_altMaxBitrateType.log_match(match_value.altMaxBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altMaxBitrates().ispresent()){ if(!single_value->field_altMaxBitrates.match(match_value.altMaxBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altMaxBitrates"); single_value->field_altMaxBitrates.log_match(match_value.altMaxBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altMaxBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altMaxBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altMaxBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altMaxBitrateType := "); single_value->field_altMaxBitrateType.log_match(match_value.altMaxBitrateType(), legacy); TTCN_Logger::log_event_str(", altMaxBitrates := "); if (match_value.altMaxBitrates().ispresent()) { single_value->field_altMaxBitrates.log_match(match_value.altMaxBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altMaxBitrates.log(); if (single_value->field_altMaxBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__MaxBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altMaxBitrateType().is_bound()) altMaxBitrateType().set_implicit_omit(); if (!altMaxBitrates().is_bound()) altMaxBitrates() = OMIT_VALUE; else altMaxBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__MaxBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altMaxBitrateType.encode_text(text_buf); single_value->field_altMaxBitrates.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); } } void Alt__RAB__Parameter__MaxBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altMaxBitrateType.decode_text(text_buf); single_value->field_altMaxBitrates.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__MaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf."); } } void Alt__RAB__Parameter__MaxBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__MaxBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altMaxBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__MaxBitrateInf_template* precondition = new Alt__RAB__Parameter__MaxBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__MaxBitrateInf_template* implied_template = new Alt__RAB__Parameter__MaxBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__MaxBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__MaxBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altMaxBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf"); single_value->field_altMaxBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrateInf"); } boolean Alt__RAB__Parameter__MaxBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__MaxBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__MaxBitrates::Alt__RAB__Parameter__MaxBitrates(const Alt__RAB__Parameter__MaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__MaxBitrates::~Alt__RAB__Parameter__MaxBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__MaxBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__MaxBitrates& Alt__RAB__Parameter__MaxBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__MaxBitrates& Alt__RAB__Parameter__MaxBitrates::operator=(const Alt__RAB__Parameter__MaxBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__MaxBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__MaxBitrates::operator==(const Alt__RAB__Parameter__MaxBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } Alt__RAB__Parameter__MaxBitrateList& Alt__RAB__Parameter__MaxBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new Alt__RAB__Parameter__MaxBitrateList; } return *val_ptr->value_elements[index_value]; } Alt__RAB__Parameter__MaxBitrateList& Alt__RAB__Parameter__MaxBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__MaxBitrateList& Alt__RAB__Parameter__MaxBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const Alt__RAB__Parameter__MaxBitrateList& Alt__RAB__Parameter__MaxBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__MaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new Alt__RAB__Parameter__MaxBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::operator+(const Alt__RAB__Parameter__MaxBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__MaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__MaxBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new Alt__RAB__Parameter__MaxBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates","element"); Alt__RAB__Parameter__MaxBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__MaxBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__MaxBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates","element"); Alt__RAB__Parameter__MaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__MaxBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new Alt__RAB__Parameter__MaxBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new Alt__RAB__Parameter__MaxBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__MaxBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__MaxBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__MaxBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__MaxBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__MaxBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__MaxBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__MaxBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__MaxBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__MaxBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__MaxBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__MaxBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__MaxBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__MaxBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__MaxBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new Alt__RAB__Parameter__MaxBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__MaxBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__MaxBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } Alt__RAB__Parameter__MaxBitrateList* val = new Alt__RAB__Parameter__MaxBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (Alt__RAB__Parameter__MaxBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__MaxBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__MaxBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__MaxBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__MaxBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__MaxBitrates_template::copy_value(const Alt__RAB__Parameter__MaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (Alt__RAB__Parameter__MaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__MaxBitrates_template::copy_template(const Alt__RAB__Parameter__MaxBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (Alt__RAB__Parameter__MaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__MaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__MaxBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__MaxBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__MaxBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__MaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__MaxBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__MaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template() { } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(const Alt__RAB__Parameter__MaxBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__MaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates from an unbound optional field."); } } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(Alt__RAB__Parameter__MaxBitrates_template* p_precondition, Alt__RAB__Parameter__MaxBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__MaxBitrates_template::Alt__RAB__Parameter__MaxBitrates_template(const Alt__RAB__Parameter__MaxBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__MaxBitrates_template::~Alt__RAB__Parameter__MaxBitrates_template() { clean_up(); } void Alt__RAB__Parameter__MaxBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::operator=(const Alt__RAB__Parameter__MaxBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__MaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); } return *this; } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::operator=(const Alt__RAB__Parameter__MaxBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } Alt__RAB__Parameter__MaxBitrateList_template& Alt__RAB__Parameter__MaxBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); break; } return *single_value.value_elements[index_value]; } Alt__RAB__Parameter__MaxBitrateList_template& Alt__RAB__Parameter__MaxBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__MaxBitrateList_template& Alt__RAB__Parameter__MaxBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const Alt__RAB__Parameter__MaxBitrateList_template& Alt__RAB__Parameter__MaxBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__MaxBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (Alt__RAB__Parameter__MaxBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (Alt__RAB__Parameter__MaxBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__MaxBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__MaxBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); } boolean Alt__RAB__Parameter__MaxBitrates_template::match(const Alt__RAB__Parameter__MaxBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__MaxBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); Alt__RAB__Parameter__MaxBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__MaxBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__MaxBitrates Alt__RAB__Parameter__MaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__MaxBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__MaxBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__MaxBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__MaxBitrates_template& Alt__RAB__Parameter__MaxBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__MaxBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__MaxBitrates_template::log_match(const Alt__RAB__Parameter__MaxBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__MaxBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); } } void Alt__RAB__Parameter__MaxBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); single_value.value_elements = (Alt__RAB__Parameter__MaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__MaxBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__MaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-MaxBitrates."); } } boolean Alt__RAB__Parameter__MaxBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__MaxBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__MaxBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__MaxBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__MaxBitrates_template* precondition = new Alt__RAB__Parameter__MaxBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__MaxBitrates_template* implied_template = new Alt__RAB__Parameter__MaxBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__MaxBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__MaxBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-MaxBitrates"); } boolean Alt__RAB__Parameter__MaxBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } Alt__RAB__Parameter__GuaranteedBitrateType::Alt__RAB__Parameter__GuaranteedBitrateType() { enum_value = UNBOUND_VALUE; } Alt__RAB__Parameter__GuaranteedBitrateType::Alt__RAB__Parameter__GuaranteedBitrateType(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } Alt__RAB__Parameter__GuaranteedBitrateType::Alt__RAB__Parameter__GuaranteedBitrateType(enum_type other_value) { enum_value = other_value; } Alt__RAB__Parameter__GuaranteedBitrateType::Alt__RAB__Parameter__GuaranteedBitrateType(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); enum_value = other_value.enum_value; } Alt__RAB__Parameter__GuaranteedBitrateType& Alt__RAB__Parameter__GuaranteedBitrateType::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", other_value); enum_value = (enum_type)other_value; return *this; } Alt__RAB__Parameter__GuaranteedBitrateType& Alt__RAB__Parameter__GuaranteedBitrateType::operator=(enum_type other_value) { enum_value = other_value; return *this; } Alt__RAB__Parameter__GuaranteedBitrateType& Alt__RAB__Parameter__GuaranteedBitrateType::operator=(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); enum_value = other_value.enum_value; return *this; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value == other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator==(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value == other_value.enum_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value < other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator<(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value < other_value.enum_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value > other_value; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::operator>(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value > other_value.enum_value; } const char *Alt__RAB__Parameter__GuaranteedBitrateType::enum_to_str(enum_type enum_par) { switch (enum_par) { case unspecified: return "unspecified"; case value__range: return "value_range"; case discrete__values: return "discrete_values"; default: return ""; } } Alt__RAB__Parameter__GuaranteedBitrateType::enum_type Alt__RAB__Parameter__GuaranteedBitrateType::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "unspecified")) return unspecified; if (!strcmp(str_par, "value_range")) return value__range; if (!strcmp(str_par, "discrete_values")) return discrete__values; } return UNKNOWN_VALUE; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: return TRUE; default: return FALSE; } } int Alt__RAB__Parameter__GuaranteedBitrateType::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int Alt__RAB__Parameter__GuaranteedBitrateType::enum2int(const Alt__RAB__Parameter__GuaranteedBitrateType& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void Alt__RAB__Parameter__GuaranteedBitrateType::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", int_val); enum_value = (enum_type)int_val; } Alt__RAB__Parameter__GuaranteedBitrateType::operator Alt__RAB__Parameter__GuaranteedBitrateType::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return enum_value; } void Alt__RAB__Parameter__GuaranteedBitrateType::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void Alt__RAB__Parameter__GuaranteedBitrateType::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } } void Alt__RAB__Parameter__GuaranteedBitrateType::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); text_buf.push_int(enum_value); } void Alt__RAB__Parameter__GuaranteedBitrateType::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", enum_value); } void Alt__RAB__Parameter__GuaranteedBitrateType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__GuaranteedBitrateType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__GuaranteedBitrateType::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__GuaranteedBitrateType::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int Alt__RAB__Parameter__GuaranteedBitrateType::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int Alt__RAB__Parameter__GuaranteedBitrateType::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = unspecified; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__GuaranteedBitrateType::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int Alt__RAB__Parameter__GuaranteedBitrateType::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void Alt__RAB__Parameter__GuaranteedBitrateType::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case unspecified: enc_val = 0; ext_bit = FALSE; break; case value__range: enc_val = 1; ext_bit = FALSE; break; case discrete__values: enc_val = 2; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 2); } void Alt__RAB__Parameter__GuaranteedBitrateType::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = unspecified; break; case 1: enum_value = value__range; break; case 2: enum_value = discrete__values; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", dec_int); break; } } void Alt__RAB__Parameter__GuaranteedBitrateType_template::copy_template(const Alt__RAB__Parameter__GuaranteedBitrateType_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateType_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__GuaranteedBitrateType_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__GuaranteedBitrateType_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template() { } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!Alt__RAB__Parameter__GuaranteedBitrateType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType with unknown numeric value %d.", other_value); single_value = (Alt__RAB__Parameter__GuaranteedBitrateType::enum_type)other_value; } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(Alt__RAB__Parameter__GuaranteedBitrateType::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == Alt__RAB__Parameter__GuaranteedBitrateType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); single_value = other_value.enum_value; } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__GuaranteedBitrateType::enum_type)(const Alt__RAB__Parameter__GuaranteedBitrateType&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType from an unbound optional field."); } } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(Alt__RAB__Parameter__GuaranteedBitrateType_template* p_precondition, Alt__RAB__Parameter__GuaranteedBitrateType_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__GuaranteedBitrateType_template::Alt__RAB__Parameter__GuaranteedBitrateType_template(const Alt__RAB__Parameter__GuaranteedBitrateType_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__GuaranteedBitrateType_template::~Alt__RAB__Parameter__GuaranteedBitrateType_template() { clean_up(); } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != Alt__RAB__Parameter__GuaranteedBitrateType::UNBOUND_VALUE; } void Alt__RAB__Parameter__GuaranteedBitrateType_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(int other_value) { if (!Alt__RAB__Parameter__GuaranteedBitrateType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__GuaranteedBitrateType::enum_type)other_value; return *this; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(Alt__RAB__Parameter__GuaranteedBitrateType::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value) { if (other_value.enum_value == Alt__RAB__Parameter__GuaranteedBitrateType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (Alt__RAB__Parameter__GuaranteedBitrateType::enum_type)(const Alt__RAB__Parameter__GuaranteedBitrateType&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } return *this; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrateType_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::match(Alt__RAB__Parameter__GuaranteedBitrateType::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } return FALSE; } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::match(const Alt__RAB__Parameter__GuaranteedBitrateType& other_value, boolean) const { if (other_value.enum_value == Alt__RAB__Parameter__GuaranteedBitrateType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType with an unbound value."); return match(other_value.enum_value); } Alt__RAB__Parameter__GuaranteedBitrateType::enum_type Alt__RAB__Parameter__GuaranteedBitrateType_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return single_value; } void Alt__RAB__Parameter__GuaranteedBitrateType_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateType_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateType_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__GuaranteedBitrateType_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(Alt__RAB__Parameter__GuaranteedBitrateType::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__GuaranteedBitrateType_template::log_match(const Alt__RAB__Parameter__GuaranteedBitrateType& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void Alt__RAB__Parameter__GuaranteedBitrateType_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } } void Alt__RAB__Parameter__GuaranteedBitrateType_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (Alt__RAB__Parameter__GuaranteedBitrateType::enum_type)text_buf.pull_int().get_val(); if (!Alt__RAB__Parameter__GuaranteedBitrateType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateType_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__GuaranteedBitrateType_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__GuaranteedBitrateType_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { Alt__RAB__Parameter__GuaranteedBitrateType::enum_type enum_val = Alt__RAB__Parameter__GuaranteedBitrateType::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!Alt__RAB__Parameter__GuaranteedBitrateType::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__GuaranteedBitrateType_template* precondition = new Alt__RAB__Parameter__GuaranteedBitrateType_template; precondition->set_param(*m_p->get_elem(0)); Alt__RAB__Parameter__GuaranteedBitrateType_template* implied_template = new Alt__RAB__Parameter__GuaranteedBitrateType_template; implied_template->set_param(*m_p->get_elem(1)); *this = Alt__RAB__Parameter__GuaranteedBitrateType_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__GuaranteedBitrateType_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateType"); } Alt__RAB__Parameter__GuaranteedBitrateInf::Alt__RAB__Parameter__GuaranteedBitrateInf() { } Alt__RAB__Parameter__GuaranteedBitrateInf::Alt__RAB__Parameter__GuaranteedBitrateInf(const Alt__RAB__Parameter__GuaranteedBitrateType& par_altGuaranteedBitrateType, const OPTIONAL< Alt__RAB__Parameter__GuaranteedBitrates >& par_altGuaranteedBitrates) : field_altGuaranteedBitrateType(par_altGuaranteedBitrateType), field_altGuaranteedBitrates(par_altGuaranteedBitrates) { } Alt__RAB__Parameter__GuaranteedBitrateInf::Alt__RAB__Parameter__GuaranteedBitrateInf(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); if (other_value.altGuaranteedBitrateType().is_bound()) field_altGuaranteedBitrateType = other_value.altGuaranteedBitrateType(); else field_altGuaranteedBitrateType.clean_up(); if (other_value.altGuaranteedBitrates().is_bound()) field_altGuaranteedBitrates = other_value.altGuaranteedBitrates(); else field_altGuaranteedBitrates.clean_up(); } void Alt__RAB__Parameter__GuaranteedBitrateInf::clean_up() { field_altGuaranteedBitrateType.clean_up(); field_altGuaranteedBitrates.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__GuaranteedBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__GuaranteedBitrateInf_descr_; } Alt__RAB__Parameter__GuaranteedBitrateInf& Alt__RAB__Parameter__GuaranteedBitrateInf::operator=(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); if (other_value.altGuaranteedBitrateType().is_bound()) field_altGuaranteedBitrateType = other_value.altGuaranteedBitrateType(); else field_altGuaranteedBitrateType.clean_up(); if (other_value.altGuaranteedBitrates().is_bound()) field_altGuaranteedBitrates = other_value.altGuaranteedBitrates(); else field_altGuaranteedBitrates.clean_up(); } return *this; } boolean Alt__RAB__Parameter__GuaranteedBitrateInf::operator==(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) const { return field_altGuaranteedBitrateType==other_value.field_altGuaranteedBitrateType && field_altGuaranteedBitrates==other_value.field_altGuaranteedBitrates; } boolean Alt__RAB__Parameter__GuaranteedBitrateInf::is_bound() const { return (field_altGuaranteedBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altGuaranteedBitrates.get_selection() || field_altGuaranteedBitrates.is_bound()); } boolean Alt__RAB__Parameter__GuaranteedBitrateInf::is_value() const { return field_altGuaranteedBitrateType.is_value() && (OPTIONAL_OMIT == field_altGuaranteedBitrates.get_selection() || field_altGuaranteedBitrates.is_value()); } int Alt__RAB__Parameter__GuaranteedBitrateInf::size_of() const { int ret_val = 1; if (field_altGuaranteedBitrates.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__GuaranteedBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altGuaranteedBitrateType := "); field_altGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altGuaranteedBitrates := "); field_altGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__GuaranteedBitrateInf::set_implicit_omit() { if (altGuaranteedBitrateType().is_bound()) altGuaranteedBitrateType().set_implicit_omit(); if (!altGuaranteedBitrates().is_bound()) altGuaranteedBitrates() = OMIT_VALUE; else altGuaranteedBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__GuaranteedBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf"); } } void Alt__RAB__Parameter__GuaranteedBitrateInf::encode_text(Text_Buf& text_buf) const { field_altGuaranteedBitrateType.encode_text(text_buf); field_altGuaranteedBitrates.encode_text(text_buf); } void Alt__RAB__Parameter__GuaranteedBitrateInf::decode_text(Text_Buf& text_buf) { field_altGuaranteedBitrateType.decode_text(text_buf); field_altGuaranteedBitrates.decode_text(text_buf); } void Alt__RAB__Parameter__GuaranteedBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__GuaranteedBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__GuaranteedBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altGuaranteedBitrateType': "); new_tlv->add_TLV(field_altGuaranteedBitrateType.BER_encode_TLV(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_coding)); ec_1.set_msg("altGuaranteedBitrates': "); new_tlv->add_TLV(field_altGuaranteedBitrates.BER_encode_TLV(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__GuaranteedBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altGuaranteedBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altGuaranteedBitrateType.BER_decode_TLV(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altGuaranteedBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altGuaranteedBitrates=OMIT_VALUE; else { field_altGuaranteedBitrates.BER_decode_TLV(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, tmp_tlv, L_form); if(field_altGuaranteedBitrates.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__GuaranteedBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altGuaranteedBitrateType"); enc_len += field_altGuaranteedBitrateType.JSON_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_tok, FALSE); } if (field_altGuaranteedBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altGuaranteedBitrates"); enc_len += field_altGuaranteedBitrates.JSON_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__GuaranteedBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altGuaranteedBitrateType_found = FALSE; boolean altGuaranteedBitrates_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (24 == name_len && 0 == strncmp(fld_name, "altGuaranteedBitrateType", name_len)) { altGuaranteedBitrateType_found = TRUE; int ret_val = field_altGuaranteedBitrateType.JSON_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 24, "altGuaranteedBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (21 == name_len && 0 == strncmp(fld_name, "altGuaranteedBitrates", name_len)) { altGuaranteedBitrates_found = TRUE; int ret_val = field_altGuaranteedBitrates.JSON_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 21, "altGuaranteedBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altGuaranteedBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altGuaranteedBitrateType"); return JSON_ERROR_FATAL; } if (!altGuaranteedBitrates_found) { field_altGuaranteedBitrates = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__GuaranteedBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altGuaranteedBitrates.is_present()) { c |= 64; } p_buf.put_c(c); field_altGuaranteedBitrateType.OER_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_buf); if (field_altGuaranteedBitrates.is_present()) field_altGuaranteedBitrates.OER_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_buf); return 0; } int Alt__RAB__Parameter__GuaranteedBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altGuaranteedBitrateType.OER_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altGuaranteedBitrates.OER_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_buf, p_oer); else field_altGuaranteedBitrates = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__GuaranteedBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altGuaranteedBitrates_present = field_altGuaranteedBitrates.is_present(); p_buf.PER_put_bit(field_altGuaranteedBitrates_present); field_altGuaranteedBitrateType.PER_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altGuaranteedBitrates_present) field_altGuaranteedBitrates.PER_encode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_buf, p_options); } void Alt__RAB__Parameter__GuaranteedBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altGuaranteedBitrates_present = p_buf.PER_get_bit(); field_altGuaranteedBitrateType.PER_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altGuaranteedBitrates_present) field_altGuaranteedBitrates.PER_decode(Alt__RAB__Parameter__GuaranteedBitrateInf_altGuaranteedBitrates_descr_, p_buf, p_options); else field_altGuaranteedBitrates = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__GuaranteedBitrateInf_template::single_value_struct { Alt__RAB__Parameter__GuaranteedBitrateType_template field_altGuaranteedBitrateType; Alt__RAB__Parameter__GuaranteedBitrates_template field_altGuaranteedBitrates; }; void Alt__RAB__Parameter__GuaranteedBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altGuaranteedBitrateType = ANY_VALUE; single_value->field_altGuaranteedBitrates = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::copy_value(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altGuaranteedBitrateType().is_bound()) { single_value->field_altGuaranteedBitrateType = other_value.altGuaranteedBitrateType(); } else { single_value->field_altGuaranteedBitrateType.clean_up(); } if (other_value.altGuaranteedBitrates().is_bound()) { if (other_value.altGuaranteedBitrates().ispresent()) single_value->field_altGuaranteedBitrates = other_value.altGuaranteedBitrates()(); else single_value->field_altGuaranteedBitrates = OMIT_VALUE; } else { single_value->field_altGuaranteedBitrates.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::copy_template(const Alt__RAB__Parameter__GuaranteedBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altGuaranteedBitrateType().get_selection()) { single_value->field_altGuaranteedBitrateType = other_value.altGuaranteedBitrateType(); } else { single_value->field_altGuaranteedBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altGuaranteedBitrates().get_selection()) { single_value->field_altGuaranteedBitrates = other_value.altGuaranteedBitrates(); } else { single_value->field_altGuaranteedBitrates.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__GuaranteedBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__GuaranteedBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template() { } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__GuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(Alt__RAB__Parameter__GuaranteedBitrateInf_template* p_precondition, Alt__RAB__Parameter__GuaranteedBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__GuaranteedBitrateInf_template::Alt__RAB__Parameter__GuaranteedBitrateInf_template(const Alt__RAB__Parameter__GuaranteedBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__GuaranteedBitrateInf_template::~Alt__RAB__Parameter__GuaranteedBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__GuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); } return *this; } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__GuaranteedBitrateInf_template::match(const Alt__RAB__Parameter__GuaranteedBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altGuaranteedBitrateType().is_bound()) return FALSE; if(!single_value->field_altGuaranteedBitrateType.match(other_value.altGuaranteedBitrateType(), legacy))return FALSE; if(!other_value.altGuaranteedBitrates().is_bound()) return FALSE; if((other_value.altGuaranteedBitrates().ispresent() ? !single_value->field_altGuaranteedBitrates.match((const Alt__RAB__Parameter__GuaranteedBitrates&)other_value.altGuaranteedBitrates(), legacy) : !single_value->field_altGuaranteedBitrates.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__GuaranteedBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altGuaranteedBitrateType.is_bound() || (single_value->field_altGuaranteedBitrates.is_omit() || single_value->field_altGuaranteedBitrates.is_bound()); } boolean Alt__RAB__Parameter__GuaranteedBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altGuaranteedBitrateType.is_value() && (single_value->field_altGuaranteedBitrates.is_omit() || single_value->field_altGuaranteedBitrates.is_value()); } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__GuaranteedBitrateInf Alt__RAB__Parameter__GuaranteedBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); Alt__RAB__Parameter__GuaranteedBitrateInf ret_val; if (single_value->field_altGuaranteedBitrateType.is_bound()) { ret_val.altGuaranteedBitrateType() = single_value->field_altGuaranteedBitrateType.valueof(); } if (single_value->field_altGuaranteedBitrates.is_omit()) ret_val.altGuaranteedBitrates() = OMIT_VALUE; else if (single_value->field_altGuaranteedBitrates.is_bound()) { ret_val.altGuaranteedBitrates() = single_value->field_altGuaranteedBitrates.valueof(); } return ret_val; } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateInf_template[list_length]; } Alt__RAB__Parameter__GuaranteedBitrateInf_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::altGuaranteedBitrateType() { set_specific(); return single_value->field_altGuaranteedBitrateType; } const Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::altGuaranteedBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altGuaranteedBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); return single_value->field_altGuaranteedBitrateType; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::altGuaranteedBitrates() { set_specific(); return single_value->field_altGuaranteedBitrates; } const Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrateInf_template::altGuaranteedBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altGuaranteedBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); return single_value->field_altGuaranteedBitrates; } int Alt__RAB__Parameter__GuaranteedBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altGuaranteedBitrates.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); } return 0; } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altGuaranteedBitrateType := "); single_value->field_altGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altGuaranteedBitrates := "); single_value->field_altGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::log_match(const Alt__RAB__Parameter__GuaranteedBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altGuaranteedBitrateType.match(match_value.altGuaranteedBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altGuaranteedBitrateType"); single_value->field_altGuaranteedBitrateType.log_match(match_value.altGuaranteedBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altGuaranteedBitrates().ispresent()){ if(!single_value->field_altGuaranteedBitrates.match(match_value.altGuaranteedBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altGuaranteedBitrates"); single_value->field_altGuaranteedBitrates.log_match(match_value.altGuaranteedBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altGuaranteedBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altGuaranteedBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altGuaranteedBitrateType := "); single_value->field_altGuaranteedBitrateType.log_match(match_value.altGuaranteedBitrateType(), legacy); TTCN_Logger::log_event_str(", altGuaranteedBitrates := "); if (match_value.altGuaranteedBitrates().ispresent()) { single_value->field_altGuaranteedBitrates.log_match(match_value.altGuaranteedBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altGuaranteedBitrates.log(); if (single_value->field_altGuaranteedBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altGuaranteedBitrateType().is_bound()) altGuaranteedBitrateType().set_implicit_omit(); if (!altGuaranteedBitrates().is_bound()) altGuaranteedBitrates() = OMIT_VALUE; else altGuaranteedBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altGuaranteedBitrateType.encode_text(text_buf); single_value->field_altGuaranteedBitrates.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); } } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altGuaranteedBitrateType.decode_text(text_buf); single_value->field_altGuaranteedBitrates.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf."); } } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__GuaranteedBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altGuaranteedBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__GuaranteedBitrateInf_template* precondition = new Alt__RAB__Parameter__GuaranteedBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__GuaranteedBitrateInf_template* implied_template = new Alt__RAB__Parameter__GuaranteedBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__GuaranteedBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__GuaranteedBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altGuaranteedBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf"); single_value->field_altGuaranteedBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrateInf"); } boolean Alt__RAB__Parameter__GuaranteedBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__GuaranteedBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__GuaranteedBitrates::Alt__RAB__Parameter__GuaranteedBitrates(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__GuaranteedBitrates::~Alt__RAB__Parameter__GuaranteedBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__GuaranteedBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__GuaranteedBitrates& Alt__RAB__Parameter__GuaranteedBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__GuaranteedBitrates& Alt__RAB__Parameter__GuaranteedBitrates::operator=(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__GuaranteedBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__GuaranteedBitrates::operator==(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } Alt__RAB__Parameter__GuaranteedBitrateList& Alt__RAB__Parameter__GuaranteedBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new Alt__RAB__Parameter__GuaranteedBitrateList; } return *val_ptr->value_elements[index_value]; } Alt__RAB__Parameter__GuaranteedBitrateList& Alt__RAB__Parameter__GuaranteedBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__GuaranteedBitrateList& Alt__RAB__Parameter__GuaranteedBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const Alt__RAB__Parameter__GuaranteedBitrateList& Alt__RAB__Parameter__GuaranteedBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__GuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new Alt__RAB__Parameter__GuaranteedBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::operator+(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__GuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__GuaranteedBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new Alt__RAB__Parameter__GuaranteedBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates","element"); Alt__RAB__Parameter__GuaranteedBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__GuaranteedBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__GuaranteedBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates","element"); Alt__RAB__Parameter__GuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__GuaranteedBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new Alt__RAB__Parameter__GuaranteedBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new Alt__RAB__Parameter__GuaranteedBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__GuaranteedBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__GuaranteedBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__GuaranteedBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__GuaranteedBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__GuaranteedBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__GuaranteedBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__GuaranteedBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__GuaranteedBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__GuaranteedBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__GuaranteedBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__GuaranteedBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__GuaranteedBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__GuaranteedBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__GuaranteedBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new Alt__RAB__Parameter__GuaranteedBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__GuaranteedBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__GuaranteedBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } Alt__RAB__Parameter__GuaranteedBitrateList* val = new Alt__RAB__Parameter__GuaranteedBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__GuaranteedBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__GuaranteedBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__GuaranteedBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__GuaranteedBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__GuaranteedBitrates_template::copy_value(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__GuaranteedBitrates_template::copy_template(const Alt__RAB__Parameter__GuaranteedBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__GuaranteedBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__GuaranteedBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__GuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__GuaranteedBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__GuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template() { } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__GuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates from an unbound optional field."); } } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(Alt__RAB__Parameter__GuaranteedBitrates_template* p_precondition, Alt__RAB__Parameter__GuaranteedBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__GuaranteedBitrates_template::Alt__RAB__Parameter__GuaranteedBitrates_template(const Alt__RAB__Parameter__GuaranteedBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__GuaranteedBitrates_template::~Alt__RAB__Parameter__GuaranteedBitrates_template() { clean_up(); } void Alt__RAB__Parameter__GuaranteedBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__GuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); } return *this; } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__GuaranteedBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } Alt__RAB__Parameter__GuaranteedBitrateList_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); break; } return *single_value.value_elements[index_value]; } Alt__RAB__Parameter__GuaranteedBitrateList_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__GuaranteedBitrateList_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const Alt__RAB__Parameter__GuaranteedBitrateList_template& Alt__RAB__Parameter__GuaranteedBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__GuaranteedBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__GuaranteedBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__GuaranteedBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::match(const Alt__RAB__Parameter__GuaranteedBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); Alt__RAB__Parameter__GuaranteedBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__GuaranteedBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__GuaranteedBitrates Alt__RAB__Parameter__GuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__GuaranteedBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__GuaranteedBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__GuaranteedBitrates_template& Alt__RAB__Parameter__GuaranteedBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__GuaranteedBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__GuaranteedBitrates_template::log_match(const Alt__RAB__Parameter__GuaranteedBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__GuaranteedBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); } } void Alt__RAB__Parameter__GuaranteedBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); single_value.value_elements = (Alt__RAB__Parameter__GuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__GuaranteedBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__GuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates."); } } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__GuaranteedBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__GuaranteedBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__GuaranteedBitrates_template* precondition = new Alt__RAB__Parameter__GuaranteedBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__GuaranteedBitrates_template* implied_template = new Alt__RAB__Parameter__GuaranteedBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__GuaranteedBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__GuaranteedBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-GuaranteedBitrates"); } boolean Alt__RAB__Parameter__GuaranteedBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::UNBOUND_ELEM; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4() { val_ptr = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst4"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst4_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) { switch (other_value.union_selection) { case ALT_rAB__Parameters: field_rAB__Parameters = new RAB__Parameters(*other_value.field_rAB__Parameters); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf(*other_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf(*other_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf(*other_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf(*other_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf); break; default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { case ALT_rAB__Parameters: return *field_rAB__Parameters == *other_value.field_rAB__Parameters; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: return *field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf == *other_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: return *field_alt__RAB__Parameter__ExtendedMaxBitrateInf == *other_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: return *field_alt__RAB__Parameter__SupportedMaxBitrateInf == *other_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: return *field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf == *other_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; default: return FALSE; } } RAB__Parameters& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::rAB__Parameters() { if (union_selection != ALT_rAB__Parameters) { clean_up(); field_rAB__Parameters = new RAB__Parameters; union_selection = ALT_rAB__Parameters; } return *field_rAB__Parameters; } const RAB__Parameters& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::rAB__Parameters() const { if (union_selection != ALT_rAB__Parameters) TTCN_error("Using non-selected field rAB_Parameters in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *field_rAB__Parameters; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__ExtendedGuaranteedBitrateInf() { if (union_selection != ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf) { clean_up(); field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; union_selection = ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; } return *field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__ExtendedGuaranteedBitrateInf() const { if (union_selection != ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf) TTCN_error("Using non-selected field alt_RAB_Parameter_ExtendedGuaranteedBitrateInf in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; } Alt__RAB__Parameter__ExtendedMaxBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__ExtendedMaxBitrateInf() { if (union_selection != ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf) { clean_up(); field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf; union_selection = ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; } return *field_alt__RAB__Parameter__ExtendedMaxBitrateInf; } const Alt__RAB__Parameter__ExtendedMaxBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__ExtendedMaxBitrateInf() const { if (union_selection != ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf) TTCN_error("Using non-selected field alt_RAB_Parameter_ExtendedMaxBitrateInf in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *field_alt__RAB__Parameter__ExtendedMaxBitrateInf; } Alt__RAB__Parameter__SupportedMaxBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__SupportedMaxBitrateInf() { if (union_selection != ALT_alt__RAB__Parameter__SupportedMaxBitrateInf) { clean_up(); field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf; union_selection = ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; } return *field_alt__RAB__Parameter__SupportedMaxBitrateInf; } const Alt__RAB__Parameter__SupportedMaxBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__SupportedMaxBitrateInf() const { if (union_selection != ALT_alt__RAB__Parameter__SupportedMaxBitrateInf) TTCN_error("Using non-selected field alt_RAB_Parameter_SupportedMaxBitrateInf in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *field_alt__RAB__Parameter__SupportedMaxBitrateInf; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__SupportedGuaranteedBitrateInf() { if (union_selection != ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf) { clean_up(); field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf; union_selection = ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; } return *field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; } const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::alt__RAB__Parameter__SupportedGuaranteedBitrateInf() const { if (union_selection != ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf) TTCN_error("Using non-selected field alt_RAB_Parameter_SupportedGuaranteedBitrateInf in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; case ALT_rAB__Parameters: return field_rAB__Parameters->is_value(); case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: return field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->is_value(); case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: return field_alt__RAB__Parameter__ExtendedMaxBitrateInf->is_value(); case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: return field_alt__RAB__Parameter__SupportedMaxBitrateInf->is_value(); case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: return field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::clean_up() { switch (union_selection) { case ALT_rAB__Parameters: delete field_rAB__Parameters; break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: delete field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: delete field_alt__RAB__Parameter__ExtendedMaxBitrateInf; break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: delete field_alt__RAB__Parameter__SupportedMaxBitrateInf; break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: delete field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; break; default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::log() const { switch (union_selection) { case ALT_rAB__Parameters: TTCN_Logger::log_event_str("{ rAB_Parameters := "); field_rAB__Parameters->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedGuaranteedBitrateInf := "); field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedMaxBitrateInf := "); field_alt__RAB__Parameter__ExtendedMaxBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedMaxBitrateInf := "); field_alt__RAB__Parameter__SupportedMaxBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedGuaranteedBitrateInf := "); field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "rAB_Parameters")) { rAB__Parameters().set_param(*mp_last); if (!rAB__Parameters().is_bound()) clean_up(); return; } if (!strcmp(last_name, "alt_RAB_Parameter_ExtendedGuaranteedBitrateInf")) { alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().set_param(*mp_last); if (!alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().is_bound()) clean_up(); return; } if (!strcmp(last_name, "alt_RAB_Parameter_ExtendedMaxBitrateInf")) { alt__RAB__Parameter__ExtendedMaxBitrateInf().set_param(*mp_last); if (!alt__RAB__Parameter__ExtendedMaxBitrateInf().is_bound()) clean_up(); return; } if (!strcmp(last_name, "alt_RAB_Parameter_SupportedMaxBitrateInf")) { alt__RAB__Parameter__SupportedMaxBitrateInf().set_param(*mp_last); if (!alt__RAB__Parameter__SupportedMaxBitrateInf().is_bound()) clean_up(); return; } if (!strcmp(last_name, "alt_RAB_Parameter_SupportedGuaranteedBitrateInf")) { alt__RAB__Parameter__SupportedGuaranteedBitrateInf().set_param(*mp_last); if (!alt__RAB__Parameter__SupportedGuaranteedBitrateInf().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::set_implicit_omit() { switch (union_selection) { case ALT_rAB__Parameters: field_rAB__Parameters->set_implicit_omit(); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->set_implicit_omit(); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: field_alt__RAB__Parameter__ExtendedMaxBitrateInf->set_implicit_omit(); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: field_alt__RAB__Parameter__SupportedMaxBitrateInf->set_implicit_omit(); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->set_implicit_omit(); break; default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_rAB__Parameters: field_rAB__Parameters->encode_text(text_buf); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->encode_text(text_buf); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: field_alt__RAB__Parameter__ExtendedMaxBitrateInf->encode_text(text_buf); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: field_alt__RAB__Parameter__SupportedMaxBitrateInf->encode_text(text_buf); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_rAB__Parameters: rAB__Parameters().decode_text(text_buf); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().decode_text(text_buf); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: alt__RAB__Parameter__ExtendedMaxBitrateInf().decode_text(text_buf); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: alt__RAB__Parameter__SupportedMaxBitrateInf().decode_text(text_buf); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: alt__RAB__Parameter__SupportedGuaranteedBitrateInf().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case ALT_rAB__Parameters: ec_1.set_msg("rAB_Parameters': "); new_tlv = field_rAB__Parameters->BER_encode_TLV(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_coding); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: ec_1.set_msg("alt_RAB_Parameter_ExtendedGuaranteedBitrateInf': "); new_tlv = field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->BER_encode_TLV(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_coding); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: ec_1.set_msg("alt_RAB_Parameter_ExtendedMaxBitrateInf': "); new_tlv = field_alt__RAB__Parameter__ExtendedMaxBitrateInf->BER_encode_TLV(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_coding); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: ec_1.set_msg("alt_RAB_Parameter_SupportedMaxBitrateInf': "); new_tlv = field_alt__RAB__Parameter__SupportedMaxBitrateInf->BER_encode_TLV(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_coding); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: ec_1.set_msg("alt_RAB_Parameter_SupportedGuaranteedBitrateInf': "); new_tlv = field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->BER_encode_TLV(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_coding); break; case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); field_rAB__Parameters = new RAB__Parameters; union_selection = ALT_rAB__Parameters; if (field_rAB__Parameters->BER_decode_isMyMsg(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_tlv)) return TRUE; delete field_rAB__Parameters; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; union_selection = ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; if (field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->BER_decode_isMyMsg(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_tlv)) return TRUE; delete field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf; union_selection = ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; if (field_alt__RAB__Parameter__ExtendedMaxBitrateInf->BER_decode_isMyMsg(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_tlv)) return TRUE; delete field_alt__RAB__Parameter__ExtendedMaxBitrateInf; field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf; union_selection = ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; if (field_alt__RAB__Parameter__SupportedMaxBitrateInf->BER_decode_isMyMsg(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_tlv)) return TRUE; delete field_alt__RAB__Parameter__SupportedMaxBitrateInf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf; union_selection = ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; if (field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->BER_decode_isMyMsg(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_tlv)) return TRUE; delete field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == Alt__RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_rAB__Parameters; field_rAB__Parameters = new RAB__Parameters; ec_2.set_msg("rAB-Parameters': "); field_rAB__Parameters->BER_decode_TLV(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, tlv_opentype, L_form); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedGuaranteedBitrateInf': "); field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->BER_decode_TLV(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, tlv_opentype, L_form); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedMaxBitrateInf': "); field_alt__RAB__Parameter__ExtendedMaxBitrateInf->BER_decode_TLV(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, tlv_opentype, L_form); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedMaxBitrateInf': "); field_alt__RAB__Parameter__SupportedMaxBitrateInf->BER_decode_TLV(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, tlv_opentype, L_form); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedGuaranteedBitrateInf': "); field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->BER_decode_TLV(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, tlv_opentype, L_form); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { boolean as_value = p_td.json->as_value; int enc_len = as_value ? 0 : p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); switch(union_selection) { case ALT_rAB__Parameters: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAB_Parameters"); } enc_len += field_rAB__Parameters->JSON_encode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_tok, FALSE); break; case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "alt_RAB_Parameter_ExtendedGuaranteedBitrateInf"); } enc_len += field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->JSON_encode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_tok, FALSE); break; case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "alt_RAB_Parameter_ExtendedMaxBitrateInf"); } enc_len += field_alt__RAB__Parameter__ExtendedMaxBitrateInf->JSON_encode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_tok, FALSE); break; case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "alt_RAB_Parameter_SupportedMaxBitrateInf"); } enc_len += field_alt__RAB__Parameter__SupportedMaxBitrateInf->JSON_encode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_tok, FALSE); break; case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "alt_RAB_Parameter_SupportedGuaranteedBitrateInf"); } enc_len += field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->JSON_encode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_tok, FALSE); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return -1; } if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { if (0 <= p_chosen_field && 5 > p_chosen_field) { switch (p_chosen_field) { case 0: return rAB__Parameters().JSON_decode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_tok, TRUE, FALSE); case 1: return alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_tok, TRUE, FALSE); case 2: return alt__RAB__Parameter__ExtendedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_tok, TRUE, FALSE); case 3: return alt__RAB__Parameter__SupportedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_tok, TRUE, FALSE); case 4: return alt__RAB__Parameter__SupportedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_tok, TRUE, FALSE); } } if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; if (p_td.json->as_value) { size_t buf_pos = p_tok.get_buf_pos(); p_tok.get_next_token(&j_token, NULL, NULL); int ret_val = 0; switch(j_token) { case JSON_TOKEN_NUMBER: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "number '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_STRING: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "string '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_TRUE: case JSON_TOKEN_LITERAL_FALSE: { char* literal_str = mprintf("literal (%s)", (JSON_TOKEN_LITERAL_TRUE == j_token) ? "true" : "false"); try { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, literal_str); } catch (const TC_Error&) { Free(literal_str); throw; } Free(literal_str); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_ARRAY_START: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "array '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_OBJECT_START: { p_tok.set_buf_pos(buf_pos); ret_val = rAB__Parameters().JSON_decode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = alt__RAB__Parameter__ExtendedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = alt__RAB__Parameter__SupportedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = alt__RAB__Parameter__SupportedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "object '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_NULL: { clean_up(); return JSON_ERROR_INVALID_TOKEN; } case JSON_TOKEN_ERROR: JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; default: return JSON_ERROR_INVALID_TOKEN; } return ret_val; } else { size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } char* fld_name = 0; size_t name_len = 0; dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_NAME != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else { if (14 == name_len && 0 == strncmp(fld_name, "rAB_Parameters", name_len)) { int ret_val = rAB__Parameters().JSON_decode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "rAB_Parameters"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (46 == name_len && 0 == strncmp(fld_name, "alt_RAB_Parameter_ExtendedGuaranteedBitrateInf", name_len)) { int ret_val = alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 46, "alt_RAB_Parameter_ExtendedGuaranteedBitrateInf"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (39 == name_len && 0 == strncmp(fld_name, "alt_RAB_Parameter_ExtendedMaxBitrateInf", name_len)) { int ret_val = alt__RAB__Parameter__ExtendedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 39, "alt_RAB_Parameter_ExtendedMaxBitrateInf"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (40 == name_len && 0 == strncmp(fld_name, "alt_RAB_Parameter_SupportedMaxBitrateInf", name_len)) { int ret_val = alt__RAB__Parameter__SupportedMaxBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 40, "alt_RAB_Parameter_SupportedMaxBitrateInf"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (47 == name_len && 0 == strncmp(fld_name, "alt_RAB_Parameter_SupportedGuaranteedBitrateInf", name_len)) { int ret_val = alt__RAB__Parameter__SupportedGuaranteedBitrateInf().JSON_decode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 47, "alt_RAB_Parameter_SupportedGuaranteedBitrateInf"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_STATIC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } return (int)dec_len; } } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { case ALT_rAB__Parameters: { TTCN_Buffer buf; field_rAB__Parameters->OER_encode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: { TTCN_Buffer buf; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->OER_encode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: { TTCN_Buffer buf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf->OER_encode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: { TTCN_Buffer buf; field_alt__RAB__Parameter__SupportedMaxBitrateInf->OER_encode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: { TTCN_Buffer buf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->OER_encode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == Alt__RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_rAB__Parameters; field_rAB__Parameters = new RAB__Parameters; ec_2.set_msg("rAB-Parameters': "); size_t pos_1 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_1; field_rAB__Parameters->OER_decode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, p_buf, tmp_oer_1); p_buf.set_pos(pos_1); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedGuaranteedBitrateInf': "); size_t pos_2 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_2; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->OER_decode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, p_buf, tmp_oer_2); p_buf.set_pos(pos_2); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedMaxBitrateInf': "); size_t pos_3 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_3; field_alt__RAB__Parameter__ExtendedMaxBitrateInf->OER_decode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, p_buf, tmp_oer_3); p_buf.set_pos(pos_3); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedMaxBitrateInf': "); size_t pos_4 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_4; field_alt__RAB__Parameter__SupportedMaxBitrateInf->OER_decode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, p_buf, tmp_oer_4); p_buf.set_pos(pos_4); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedGuaranteedBitrateInf': "); size_t pos_5 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_5; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->OER_decode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, p_buf, tmp_oer_5); p_buf.set_pos(pos_5); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound open type value."); return; } switch (union_selection) { case ALT_rAB__Parameters: { TTCN_Buffer ot_buf; field_rAB__Parameters->PER_encode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: { TTCN_Buffer ot_buf; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->PER_encode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: { TTCN_Buffer ot_buf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf->PER_encode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: { TTCN_Buffer ot_buf; field_alt__RAB__Parameter__SupportedMaxBitrateInf->PER_encode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: { TTCN_Buffer ot_buf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->PER_encode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Internal error: Invalid CHOICE selection, expected an extension root field."); break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { clean_up(); PER_decode_opentype(p_buf, per_ot_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == Alt__RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_rAB__Parameters; field_rAB__Parameters = new RAB__Parameters; ec_2.set_msg("rAB-Parameters': "); field_rAB__Parameters->PER_decode(Alt__RAB__Parameters__ExtIEs_1_Extension_descr_, per_ot_buf, p_options); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedGuaranteedBitrateInf': "); field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->PER_decode(Alt__RAB__Parameters__ExtIEs_2_Extension_descr_, per_ot_buf, p_options); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-ExtendedMaxBitrateInf': "); field_alt__RAB__Parameter__ExtendedMaxBitrateInf->PER_decode(Alt__RAB__Parameters__ExtIEs_3_Extension_descr_, per_ot_buf, p_options); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedMaxBitrateInf': "); field_alt__RAB__Parameter__SupportedMaxBitrateInf->PER_decode(Alt__RAB__Parameters__ExtIEs_4_Extension_descr_, per_ot_buf, p_options); } else if (f_1 == Alt__RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf; ec_2.set_msg("alt-RAB-Parameter-SupportedGuaranteedBitrateInf': "); field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->PER_decode(Alt__RAB__Parameters__ExtIEs_5_Extension_descr_, per_ot_buf, p_options); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters = new RAB__Parameters_template(other_value.rAB__Parameters()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(other_value.alt__RAB__Parameter__ExtendedGuaranteedBitrateInf()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(other_value.alt__RAB__Parameter__ExtendedMaxBitrateInf()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template(other_value.alt__RAB__Parameter__SupportedMaxBitrateInf()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(other_value.alt__RAB__Parameter__SupportedGuaranteedBitrateInf()); break; default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters = new RAB__Parameters_template(*other_value.single_value.field_rAB__Parameters); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(*other_value.single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(*other_value.single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template(*other_value.single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(*other_value.single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: delete single_value.field_rAB__Parameters; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: delete single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: delete single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: delete single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: delete single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: return single_value.field_rAB__Parameters->match(other_value.rAB__Parameters(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: return single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->match(other_value.alt__RAB__Parameter__ExtendedGuaranteedBitrateInf(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: return single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->match(other_value.alt__RAB__Parameter__ExtendedMaxBitrateInf(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: return single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->match(other_value.alt__RAB__Parameter__SupportedMaxBitrateInf(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: return single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->match(other_value.alt__RAB__Parameter__SupportedGuaranteedBitrateInf(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: return single_value.field_rAB__Parameters->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: return single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: return single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: return single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: return single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type ret_val; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: ret_val.rAB__Parameters() = single_value.field_rAB__Parameters->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: ret_val.alt__RAB__Parameter__ExtendedGuaranteedBitrateInf() = single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: ret_val.alt__RAB__Parameter__ExtendedMaxBitrateInf() = single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: ret_val.alt__RAB__Parameter__SupportedMaxBitrateInf() = single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: ret_val.alt__RAB__Parameter__SupportedGuaranteedBitrateInf() = single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template[list_length]; } RAB__Parameters_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::rAB__Parameters() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rAB__Parameters = new RAB__Parameters_template(ANY_VALUE); else single_value.field_rAB__Parameters = new RAB__Parameters_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters; set_selection(SPECIFIC_VALUE); } return *single_value.field_rAB__Parameters; } const RAB__Parameters_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::rAB__Parameters() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAB_Parameters in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters) TTCN_error("Accessing non-selected field rAB_Parameters in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *single_value.field_rAB__Parameters; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__ExtendedGuaranteedBitrateInf() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(ANY_VALUE); else single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; set_selection(SPECIFIC_VALUE); } return *single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__ExtendedGuaranteedBitrateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field alt_RAB_Parameter_ExtendedGuaranteedBitrateInf in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf) TTCN_error("Accessing non-selected field alt_RAB_Parameter_ExtendedGuaranteedBitrateInf in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__ExtendedMaxBitrateInf() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(ANY_VALUE); else single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf; set_selection(SPECIFIC_VALUE); } return *single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf; } const Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__ExtendedMaxBitrateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field alt_RAB_Parameter_ExtendedMaxBitrateInf in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf) TTCN_error("Accessing non-selected field alt_RAB_Parameter_ExtendedMaxBitrateInf in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__SupportedMaxBitrateInf() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template(ANY_VALUE); else single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf; set_selection(SPECIFIC_VALUE); } return *single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf; } const Alt__RAB__Parameter__SupportedMaxBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__SupportedMaxBitrateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field alt_RAB_Parameter_SupportedMaxBitrateInf in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf) TTCN_error("Accessing non-selected field alt_RAB_Parameter_SupportedMaxBitrateInf in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__SupportedGuaranteedBitrateInf() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(ANY_VALUE); else single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; set_selection(SPECIFIC_VALUE); } return *single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; } const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::alt__RAB__Parameter__SupportedGuaranteedBitrateInf() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field alt_RAB_Parameter_SupportedGuaranteedBitrateInf in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf) TTCN_error("Accessing non-selected field alt_RAB_Parameter_SupportedGuaranteedBitrateInf in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return *single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: TTCN_Logger::log_event_str("{ rAB_Parameters := "); single_value.field_rAB__Parameters->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedGuaranteedBitrateInf := "); single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedMaxBitrateInf := "); single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedMaxBitrateInf := "); single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedGuaranteedBitrateInf := "); single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".rAB_Parameters"); single_value.field_rAB__Parameters->log_match(match_value.rAB__Parameters(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ rAB_Parameters := "); single_value.field_rAB__Parameters->log_match(match_value.rAB__Parameters(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".alt_RAB_Parameter_ExtendedGuaranteedBitrateInf"); single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->log_match(match_value.alt__RAB__Parameter__ExtendedGuaranteedBitrateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedGuaranteedBitrateInf := "); single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->log_match(match_value.alt__RAB__Parameter__ExtendedGuaranteedBitrateInf(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".alt_RAB_Parameter_ExtendedMaxBitrateInf"); single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->log_match(match_value.alt__RAB__Parameter__ExtendedMaxBitrateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ alt_RAB_Parameter_ExtendedMaxBitrateInf := "); single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->log_match(match_value.alt__RAB__Parameter__ExtendedMaxBitrateInf(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".alt_RAB_Parameter_SupportedMaxBitrateInf"); single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->log_match(match_value.alt__RAB__Parameter__SupportedMaxBitrateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedMaxBitrateInf := "); single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->log_match(match_value.alt__RAB__Parameter__SupportedMaxBitrateInf(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".alt_RAB_Parameter_SupportedGuaranteedBitrateInf"); single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->log_match(match_value.alt__RAB__Parameter__SupportedGuaranteedBitrateInf(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ alt_RAB_Parameter_SupportedGuaranteedBitrateInf := "); single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->log_match(match_value.alt__RAB__Parameter__SupportedGuaranteedBitrateInf(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->set_implicit_omit(); break; default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters = new RAB__Parameters_template; single_value.field_rAB__Parameters->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template; single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template; single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template; single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template; single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'"); } if (strcmp("rAB_Parameters", param_field) == 0) { rAB__Parameters().set_param(param); return; } else if (strcmp("alt_RAB_Parameter_ExtendedGuaranteedBitrateInf", param_field) == 0) { alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().set_param(param); return; } else if (strcmp("alt_RAB_Parameter_ExtendedMaxBitrateInf", param_field) == 0) { alt__RAB__Parameter__ExtendedMaxBitrateInf().set_param(param); return; } else if (strcmp("alt_RAB_Parameter_SupportedMaxBitrateInf", param_field) == 0) { alt__RAB__Parameter__SupportedMaxBitrateInf().set_param(param); return; } else if (strcmp("alt_RAB_Parameter_SupportedGuaranteedBitrateInf", param_field) == 0) { alt__RAB__Parameter__SupportedGuaranteedBitrateInf().set_param(param); return; } else param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "rAB_Parameters")) { rAB__Parameters().set_param(*mp_last); break; } if (!strcmp(last_name, "alt_RAB_Parameter_ExtendedGuaranteedBitrateInf")) { alt__RAB__Parameter__ExtendedGuaranteedBitrateInf().set_param(*mp_last); break; } if (!strcmp(last_name, "alt_RAB_Parameter_ExtendedMaxBitrateInf")) { alt__RAB__Parameter__ExtendedMaxBitrateInf().set_param(*mp_last); break; } if (!strcmp(last_name, "alt_RAB_Parameter_SupportedMaxBitrateInf")) { alt__RAB__Parameter__SupportedMaxBitrateInf().set_param(*mp_last); break; } if (!strcmp(last_name, "alt_RAB_Parameter_SupportedGuaranteedBitrateInf")) { alt__RAB__Parameter__SupportedGuaranteedBitrateInf().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_rAB__Parameters: single_value.field_rAB__Parameters->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedGuaranteedBitrateInf->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__ExtendedMaxBitrateInf: single_value.field_alt__RAB__Parameter__ExtendedMaxBitrateInf->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedMaxBitrateInf: single_value.field_alt__RAB__Parameter__SupportedMaxBitrateInf->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type::ALT_alt__RAB__Parameter__SupportedGuaranteedBitrateInf: single_value.field_alt__RAB__Parameter__SupportedGuaranteedBitrateInf->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11.extensionValue.type"); } TrafficClass::TrafficClass() { enum_value = UNBOUND_VALUE; } TrafficClass::TrafficClass(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.TrafficClass with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } TrafficClass::TrafficClass(enum_type other_value) { enum_value = other_value; } TrafficClass::TrafficClass(const TrafficClass& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.TrafficClass."); enum_value = other_value.enum_value; } TrafficClass& TrafficClass::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.TrafficClass.", other_value); enum_value = (enum_type)other_value; return *this; } TrafficClass& TrafficClass::operator=(enum_type other_value) { enum_value = other_value; return *this; } TrafficClass& TrafficClass::operator=(const TrafficClass& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.TrafficClass."); enum_value = other_value.enum_value; return *this; } boolean TrafficClass::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.TrafficClass comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean TrafficClass::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value == other_value; } boolean TrafficClass::operator==(const TrafficClass& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value == other_value.enum_value; } boolean TrafficClass::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.TrafficClass comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean TrafficClass::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value < other_value; } boolean TrafficClass::operator<(const TrafficClass& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value < other_value.enum_value; } boolean TrafficClass::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.TrafficClass comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean TrafficClass::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value > other_value; } boolean TrafficClass::operator>(const TrafficClass& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return enum_value > other_value.enum_value; } const char *TrafficClass::enum_to_str(enum_type enum_par) { switch (enum_par) { case conversational: return "conversational"; case streaming: return "streaming"; case interactive: return "interactive"; case background: return "background"; default: return ""; } } TrafficClass::enum_type TrafficClass::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "conversational")) return conversational; if (!strcmp(str_par, "streaming")) return streaming; if (!strcmp(str_par, "interactive")) return interactive; if (!strcmp(str_par, "background")) return background; } return UNKNOWN_VALUE; } boolean TrafficClass::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: return TRUE; default: return FALSE; } } int TrafficClass::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.TrafficClass.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int TrafficClass::enum2int(const TrafficClass& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.TrafficClass.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void TrafficClass::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.TrafficClass.", int_val); enum_value = (enum_type)int_val; } TrafficClass::operator TrafficClass::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.TrafficClass."); return enum_value; } void TrafficClass::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void TrafficClass::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.TrafficClass"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.TrafficClass."); } } void TrafficClass::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.TrafficClass."); text_buf.push_int(enum_value); } void TrafficClass::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.TrafficClass.", enum_value); } void TrafficClass::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TrafficClass::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* TrafficClass::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean TrafficClass::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.TrafficClass: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int TrafficClass::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int TrafficClass::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = conversational; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int TrafficClass::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.TrafficClass."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int TrafficClass::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void TrafficClass::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case conversational: enc_val = 0; ext_bit = FALSE; break; case streaming: enc_val = 1; ext_bit = FALSE; break; case interactive: enc_val = 2; ext_bit = FALSE; break; case background: enc_val = 3; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.TrafficClass."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 2); } void TrafficClass::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = conversational; break; case 1: enum_value = streaming; break; case 2: enum_value = interactive; break; case 3: enum_value = background; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.TrafficClass.", dec_int); break; } } void TrafficClass_template::copy_template(const TrafficClass_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new TrafficClass_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new TrafficClass_template(*other_value.implication_.precondition); implication_.implied_template = new TrafficClass_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.TrafficClass."); } } TrafficClass_template::TrafficClass_template() { } TrafficClass_template::TrafficClass_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TrafficClass_template::TrafficClass_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!TrafficClass::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.TrafficClass with unknown numeric value %d.", other_value); single_value = (TrafficClass::enum_type)other_value; } TrafficClass_template::TrafficClass_template(TrafficClass::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } TrafficClass_template::TrafficClass_template(const TrafficClass& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == TrafficClass::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.TrafficClass."); single_value = other_value.enum_value; } TrafficClass_template::TrafficClass_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (TrafficClass::enum_type)(const TrafficClass&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.TrafficClass from an unbound optional field."); } } TrafficClass_template::TrafficClass_template(TrafficClass_template* p_precondition, TrafficClass_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TrafficClass_template::TrafficClass_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TrafficClass_template::TrafficClass_template(const TrafficClass_template& other_value) : Base_Template() { copy_template(other_value); } TrafficClass_template::~TrafficClass_template() { clean_up(); } boolean TrafficClass_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean TrafficClass_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != TrafficClass::UNBOUND_VALUE; } void TrafficClass_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } TrafficClass_template& TrafficClass_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TrafficClass_template& TrafficClass_template::operator=(int other_value) { if (!TrafficClass::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.TrafficClass.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (TrafficClass::enum_type)other_value; return *this; } TrafficClass_template& TrafficClass_template::operator=(TrafficClass::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } TrafficClass_template& TrafficClass_template::operator=(const TrafficClass& other_value) { if (other_value.enum_value == TrafficClass::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.TrafficClass to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } TrafficClass_template& TrafficClass_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (TrafficClass::enum_type)(const TrafficClass&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.TrafficClass."); } return *this; } TrafficClass_template& TrafficClass_template::operator=(const TrafficClass_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TrafficClass_template::match(TrafficClass::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.TrafficClass."); } return FALSE; } boolean TrafficClass_template::match(const TrafficClass& other_value, boolean) const { if (other_value.enum_value == TrafficClass::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.TrafficClass with an unbound value."); return match(other_value.enum_value); } TrafficClass::enum_type TrafficClass_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.TrafficClass."); return single_value; } void TrafficClass_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TrafficClass_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.TrafficClass."); } } TrafficClass_template& TrafficClass_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.TrafficClass."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.TrafficClass."); return value_list.list_value[list_index]; } void TrafficClass_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(TrafficClass::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void TrafficClass_template::log_match(const TrafficClass& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void TrafficClass_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.TrafficClass."); } } void TrafficClass_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (TrafficClass::enum_type)text_buf.pull_int().get_val(); if (!TrafficClass::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.TrafficClass.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new TrafficClass_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.TrafficClass."); } } boolean TrafficClass_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TrafficClass_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { TrafficClass_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { TrafficClass::enum_type enum_val = TrafficClass::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!TrafficClass::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.TrafficClass."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { TrafficClass_template* precondition = new TrafficClass_template; precondition->set_param(*m_p->get_elem(0)); TrafficClass_template* implied_template = new TrafficClass_template; implied_template->set_param(*m_p->get_elem(1)); *this = TrafficClass_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.TrafficClass"); } is_ifpresent = param.get_ifpresent(); } void TrafficClass_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.TrafficClass"); } RAB__AsymmetryIndicator::RAB__AsymmetryIndicator() { enum_value = UNBOUND_VALUE; } RAB__AsymmetryIndicator::RAB__AsymmetryIndicator(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } RAB__AsymmetryIndicator::RAB__AsymmetryIndicator(enum_type other_value) { enum_value = other_value; } RAB__AsymmetryIndicator::RAB__AsymmetryIndicator(const RAB__AsymmetryIndicator& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); enum_value = other_value.enum_value; } RAB__AsymmetryIndicator& RAB__AsymmetryIndicator::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", other_value); enum_value = (enum_type)other_value; return *this; } RAB__AsymmetryIndicator& RAB__AsymmetryIndicator::operator=(enum_type other_value) { enum_value = other_value; return *this; } RAB__AsymmetryIndicator& RAB__AsymmetryIndicator::operator=(const RAB__AsymmetryIndicator& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); enum_value = other_value.enum_value; return *this; } boolean RAB__AsymmetryIndicator::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean RAB__AsymmetryIndicator::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value == other_value; } boolean RAB__AsymmetryIndicator::operator==(const RAB__AsymmetryIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value == other_value.enum_value; } boolean RAB__AsymmetryIndicator::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean RAB__AsymmetryIndicator::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value < other_value; } boolean RAB__AsymmetryIndicator::operator<(const RAB__AsymmetryIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value < other_value.enum_value; } boolean RAB__AsymmetryIndicator::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean RAB__AsymmetryIndicator::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value > other_value; } boolean RAB__AsymmetryIndicator::operator>(const RAB__AsymmetryIndicator& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value > other_value.enum_value; } const char *RAB__AsymmetryIndicator::enum_to_str(enum_type enum_par) { switch (enum_par) { case symmetric__bidirectional: return "symmetric_bidirectional"; case asymmetric__unidirectional__downlink: return "asymmetric_unidirectional_downlink"; case asymmetric__unidirectional__uplink: return "asymmetric_unidirectional_uplink"; case asymmetric__bidirectional: return "asymmetric_bidirectional"; default: return ""; } } RAB__AsymmetryIndicator::enum_type RAB__AsymmetryIndicator::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "symmetric_bidirectional")) return symmetric__bidirectional; if (!strcmp(str_par, "asymmetric_unidirectional_downlink")) return asymmetric__unidirectional__downlink; if (!strcmp(str_par, "asymmetric_unidirectional_uplink")) return asymmetric__unidirectional__uplink; if (!strcmp(str_par, "asymmetric_bidirectional")) return asymmetric__bidirectional; } return UNKNOWN_VALUE; } boolean RAB__AsymmetryIndicator::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: return TRUE; default: return FALSE; } } int RAB__AsymmetryIndicator::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int RAB__AsymmetryIndicator::enum2int(const RAB__AsymmetryIndicator& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void RAB__AsymmetryIndicator::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", int_val); enum_value = (enum_type)int_val; } RAB__AsymmetryIndicator::operator RAB__AsymmetryIndicator::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return enum_value; } void RAB__AsymmetryIndicator::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void RAB__AsymmetryIndicator::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.RAB-AsymmetryIndicator"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.RAB-AsymmetryIndicator."); } } void RAB__AsymmetryIndicator::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); text_buf.push_int(enum_value); } void RAB__AsymmetryIndicator::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", enum_value); } void RAB__AsymmetryIndicator::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RAB__AsymmetryIndicator::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RAB__AsymmetryIndicator::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RAB__AsymmetryIndicator::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.RAB-AsymmetryIndicator: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int RAB__AsymmetryIndicator::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int RAB__AsymmetryIndicator::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = symmetric__bidirectional; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int RAB__AsymmetryIndicator::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int RAB__AsymmetryIndicator::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void RAB__AsymmetryIndicator::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case symmetric__bidirectional: enc_val = 0; ext_bit = FALSE; break; case asymmetric__unidirectional__downlink: enc_val = 1; ext_bit = FALSE; break; case asymmetric__unidirectional__uplink: enc_val = 2; ext_bit = FALSE; break; case asymmetric__bidirectional: enc_val = 3; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 2); } void RAB__AsymmetryIndicator::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = symmetric__bidirectional; break; case 1: enum_value = asymmetric__unidirectional__downlink; break; case 2: enum_value = asymmetric__unidirectional__uplink; break; case 3: enum_value = asymmetric__bidirectional; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", dec_int); break; } } void RAB__AsymmetryIndicator_template::copy_template(const RAB__AsymmetryIndicator_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RAB__AsymmetryIndicator_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RAB__AsymmetryIndicator_template(*other_value.implication_.precondition); implication_.implied_template = new RAB__AsymmetryIndicator_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template() { } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!RAB__AsymmetryIndicator::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator with unknown numeric value %d.", other_value); single_value = (RAB__AsymmetryIndicator::enum_type)other_value; } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(RAB__AsymmetryIndicator::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(const RAB__AsymmetryIndicator& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == RAB__AsymmetryIndicator::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); single_value = other_value.enum_value; } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (RAB__AsymmetryIndicator::enum_type)(const RAB__AsymmetryIndicator&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator from an unbound optional field."); } } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(RAB__AsymmetryIndicator_template* p_precondition, RAB__AsymmetryIndicator_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RAB__AsymmetryIndicator_template::RAB__AsymmetryIndicator_template(const RAB__AsymmetryIndicator_template& other_value) : Base_Template() { copy_template(other_value); } RAB__AsymmetryIndicator_template::~RAB__AsymmetryIndicator_template() { clean_up(); } boolean RAB__AsymmetryIndicator_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean RAB__AsymmetryIndicator_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != RAB__AsymmetryIndicator::UNBOUND_VALUE; } void RAB__AsymmetryIndicator_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(int other_value) { if (!RAB__AsymmetryIndicator::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (RAB__AsymmetryIndicator::enum_type)other_value; return *this; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(RAB__AsymmetryIndicator::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(const RAB__AsymmetryIndicator& other_value) { if (other_value.enum_value == RAB__AsymmetryIndicator::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (RAB__AsymmetryIndicator::enum_type)(const RAB__AsymmetryIndicator&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } return *this; } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::operator=(const RAB__AsymmetryIndicator_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RAB__AsymmetryIndicator_template::match(RAB__AsymmetryIndicator::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } return FALSE; } boolean RAB__AsymmetryIndicator_template::match(const RAB__AsymmetryIndicator& other_value, boolean) const { if (other_value.enum_value == RAB__AsymmetryIndicator::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator with an unbound value."); return match(other_value.enum_value); } RAB__AsymmetryIndicator::enum_type RAB__AsymmetryIndicator_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return single_value; } void RAB__AsymmetryIndicator_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RAB__AsymmetryIndicator_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } } RAB__AsymmetryIndicator_template& RAB__AsymmetryIndicator_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); return value_list.list_value[list_index]; } void RAB__AsymmetryIndicator_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(RAB__AsymmetryIndicator::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void RAB__AsymmetryIndicator_template::log_match(const RAB__AsymmetryIndicator& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void RAB__AsymmetryIndicator_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } } void RAB__AsymmetryIndicator_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (RAB__AsymmetryIndicator::enum_type)text_buf.pull_int().get_val(); if (!RAB__AsymmetryIndicator::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RAB__AsymmetryIndicator_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.RAB-AsymmetryIndicator."); } } boolean RAB__AsymmetryIndicator_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RAB__AsymmetryIndicator_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RAB__AsymmetryIndicator_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { RAB__AsymmetryIndicator::enum_type enum_val = RAB__AsymmetryIndicator::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!RAB__AsymmetryIndicator::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.RAB-AsymmetryIndicator."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { RAB__AsymmetryIndicator_template* precondition = new RAB__AsymmetryIndicator_template; precondition->set_param(*m_p->get_elem(0)); RAB__AsymmetryIndicator_template* implied_template = new RAB__AsymmetryIndicator_template; implied_template->set_param(*m_p->get_elem(1)); *this = RAB__AsymmetryIndicator_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.RAB-AsymmetryIndicator"); } is_ifpresent = param.get_ifpresent(); } void RAB__AsymmetryIndicator_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RAB-AsymmetryIndicator"); } DeliveryOrder::DeliveryOrder() { enum_value = UNBOUND_VALUE; } DeliveryOrder::DeliveryOrder(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.DeliveryOrder with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } DeliveryOrder::DeliveryOrder(enum_type other_value) { enum_value = other_value; } DeliveryOrder::DeliveryOrder(const DeliveryOrder& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); enum_value = other_value.enum_value; } DeliveryOrder& DeliveryOrder::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.DeliveryOrder.", other_value); enum_value = (enum_type)other_value; return *this; } DeliveryOrder& DeliveryOrder::operator=(enum_type other_value) { enum_value = other_value; return *this; } DeliveryOrder& DeliveryOrder::operator=(const DeliveryOrder& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); enum_value = other_value.enum_value; return *this; } boolean DeliveryOrder::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.DeliveryOrder comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean DeliveryOrder::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value == other_value; } boolean DeliveryOrder::operator==(const DeliveryOrder& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value == other_value.enum_value; } boolean DeliveryOrder::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.DeliveryOrder comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean DeliveryOrder::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value < other_value; } boolean DeliveryOrder::operator<(const DeliveryOrder& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value < other_value.enum_value; } boolean DeliveryOrder::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.DeliveryOrder comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean DeliveryOrder::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value > other_value; } boolean DeliveryOrder::operator>(const DeliveryOrder& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value > other_value.enum_value; } const char *DeliveryOrder::enum_to_str(enum_type enum_par) { switch (enum_par) { case delivery__order__requested: return "delivery_order_requested"; case delivery__order__not__requested: return "delivery_order_not_requested"; default: return ""; } } DeliveryOrder::enum_type DeliveryOrder::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "delivery_order_requested")) return delivery__order__requested; if (!strcmp(str_par, "delivery_order_not_requested")) return delivery__order__not__requested; } return UNKNOWN_VALUE; } boolean DeliveryOrder::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int DeliveryOrder::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.DeliveryOrder.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int DeliveryOrder::enum2int(const DeliveryOrder& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.DeliveryOrder.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void DeliveryOrder::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.DeliveryOrder.", int_val); enum_value = (enum_type)int_val; } DeliveryOrder::operator DeliveryOrder::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.DeliveryOrder."); return enum_value; } void DeliveryOrder::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void DeliveryOrder::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.DeliveryOrder"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.DeliveryOrder."); } } void DeliveryOrder::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); text_buf.push_int(enum_value); } void DeliveryOrder::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.DeliveryOrder.", enum_value); } void DeliveryOrder::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void DeliveryOrder::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* DeliveryOrder::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean DeliveryOrder::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.DeliveryOrder: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int DeliveryOrder::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int DeliveryOrder::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = delivery__order__requested; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int DeliveryOrder::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int DeliveryOrder::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void DeliveryOrder::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; switch (enum_value) { case delivery__order__requested: enc_val = 0; break; case delivery__order__not__requested: enc_val = 1; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.DeliveryOrder."); } INTEGER::PER_encode_int(p_buf, enc_val, 1); } void DeliveryOrder::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; switch (dec_int) { case 0: enum_value = delivery__order__requested; break; case 1: enum_value = delivery__order__not__requested; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.DeliveryOrder.", dec_int); break; } } void DeliveryOrder_template::copy_template(const DeliveryOrder_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new DeliveryOrder_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new DeliveryOrder_template(*other_value.implication_.precondition); implication_.implied_template = new DeliveryOrder_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOrder."); } } DeliveryOrder_template::DeliveryOrder_template() { } DeliveryOrder_template::DeliveryOrder_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } DeliveryOrder_template::DeliveryOrder_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!DeliveryOrder::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.DeliveryOrder with unknown numeric value %d.", other_value); single_value = (DeliveryOrder::enum_type)other_value; } DeliveryOrder_template::DeliveryOrder_template(DeliveryOrder::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } DeliveryOrder_template::DeliveryOrder_template(const DeliveryOrder& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == DeliveryOrder::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.DeliveryOrder."); single_value = other_value.enum_value; } DeliveryOrder_template::DeliveryOrder_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (DeliveryOrder::enum_type)(const DeliveryOrder&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.DeliveryOrder from an unbound optional field."); } } DeliveryOrder_template::DeliveryOrder_template(DeliveryOrder_template* p_precondition, DeliveryOrder_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } DeliveryOrder_template::DeliveryOrder_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } DeliveryOrder_template::DeliveryOrder_template(const DeliveryOrder_template& other_value) : Base_Template() { copy_template(other_value); } DeliveryOrder_template::~DeliveryOrder_template() { clean_up(); } boolean DeliveryOrder_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean DeliveryOrder_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != DeliveryOrder::UNBOUND_VALUE; } void DeliveryOrder_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } DeliveryOrder_template& DeliveryOrder_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } DeliveryOrder_template& DeliveryOrder_template::operator=(int other_value) { if (!DeliveryOrder::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.DeliveryOrder.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (DeliveryOrder::enum_type)other_value; return *this; } DeliveryOrder_template& DeliveryOrder_template::operator=(DeliveryOrder::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } DeliveryOrder_template& DeliveryOrder_template::operator=(const DeliveryOrder& other_value) { if (other_value.enum_value == DeliveryOrder::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.DeliveryOrder to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } DeliveryOrder_template& DeliveryOrder_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (DeliveryOrder::enum_type)(const DeliveryOrder&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.DeliveryOrder."); } return *this; } DeliveryOrder_template& DeliveryOrder_template::operator=(const DeliveryOrder_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean DeliveryOrder_template::match(DeliveryOrder::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOrder."); } return FALSE; } boolean DeliveryOrder_template::match(const DeliveryOrder& other_value, boolean) const { if (other_value.enum_value == DeliveryOrder::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.DeliveryOrder with an unbound value."); return match(other_value.enum_value); } DeliveryOrder::enum_type DeliveryOrder_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.DeliveryOrder."); return single_value; } void DeliveryOrder_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new DeliveryOrder_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.DeliveryOrder."); } } DeliveryOrder_template& DeliveryOrder_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.DeliveryOrder."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.DeliveryOrder."); return value_list.list_value[list_index]; } void DeliveryOrder_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(DeliveryOrder::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void DeliveryOrder_template::log_match(const DeliveryOrder& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void DeliveryOrder_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOrder."); } } void DeliveryOrder_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (DeliveryOrder::enum_type)text_buf.pull_int().get_val(); if (!DeliveryOrder::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.DeliveryOrder.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new DeliveryOrder_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.DeliveryOrder."); } } boolean DeliveryOrder_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean DeliveryOrder_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { DeliveryOrder_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { DeliveryOrder::enum_type enum_val = DeliveryOrder::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!DeliveryOrder::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.DeliveryOrder."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { DeliveryOrder_template* precondition = new DeliveryOrder_template; precondition->set_param(*m_p->get_elem(0)); DeliveryOrder_template* implied_template = new DeliveryOrder_template; implied_template->set_param(*m_p->get_elem(1)); *this = DeliveryOrder_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.DeliveryOrder"); } is_ifpresent = param.get_ifpresent(); } void DeliveryOrder_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.DeliveryOrder"); } const SDU__Parameters_0 SDU__Parameters::UNBOUND_ELEM; SDU__Parameters::SDU__Parameters() { val_ptr = NULL; } SDU__Parameters::SDU__Parameters(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } SDU__Parameters::SDU__Parameters(const SDU__Parameters& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.SDU-Parameters."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } SDU__Parameters::~SDU__Parameters() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void SDU__Parameters::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } SDU__Parameters& SDU__Parameters::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } SDU__Parameters& SDU__Parameters::operator=(const SDU__Parameters& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.SDU-Parameters."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean SDU__Parameters::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.SDU-Parameters."); return val_ptr->n_elements == 0 ; } boolean SDU__Parameters::operator==(const SDU__Parameters& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.SDU-Parameters."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.SDU-Parameters."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } SDU__Parameters_0& SDU__Parameters::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.SDU-Parameters using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (SDU__Parameters_0**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SDU__Parameters_0(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new SDU__Parameters_0; } return *val_ptr->value_elements[index_value]; } SDU__Parameters_0& SDU__Parameters::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.SDU-Parameters."); return (*this)[(int)index_value]; } const SDU__Parameters_0& SDU__Parameters::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.SDU-Parameters."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.SDU-Parameters using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.SDU-Parameters: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const SDU__Parameters_0& SDU__Parameters::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.SDU-Parameters."); return (*this)[(int)index_value]; } SDU__Parameters SDU__Parameters::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } SDU__Parameters SDU__Parameters::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } SDU__Parameters SDU__Parameters::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } SDU__Parameters SDU__Parameters::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.SDU-Parameters."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; SDU__Parameters ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new SDU__Parameters_0(*val_ptr->value_elements[i]); } } return ret_val; } SDU__Parameters SDU__Parameters::operator+(const SDU__Parameters& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.SDU-Parameters concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; SDU__Parameters ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__Parameters_0(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new SDU__Parameters_0(*other_value.val_ptr->value_elements[i]); } } return ret_val; } SDU__Parameters SDU__Parameters::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.SDU-Parameters."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.SDU-Parameters","element"); SDU__Parameters ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__Parameters_0(*val_ptr->value_elements[i+index]); } } return ret_val; } SDU__Parameters SDU__Parameters::replace(int index, int len, const SDU__Parameters& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.SDU-Parameters."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.SDU-Parameters."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.SDU-Parameters","element"); SDU__Parameters ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__Parameters_0(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new SDU__Parameters_0(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new SDU__Parameters_0(*val_ptr->value_elements[index+i+len]); } } return ret_val; } SDU__Parameters SDU__Parameters::replace(int index, int len, const SDU__Parameters_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void SDU__Parameters::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.SDU-Parameters."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (SDU__Parameters_0**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SDU__Parameters_0(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (SDU__Parameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.SDU-Parameters: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (SDU__Parameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean SDU__Parameters::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int SDU__Parameters::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.SDU-Parameters."); return val_ptr->n_elements; } int SDU__Parameters::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.SDU-Parameters."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void SDU__Parameters::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void SDU__Parameters::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void SDU__Parameters::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.SDU-Parameters"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.SDU-Parameters"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void SDU__Parameters::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.SDU-Parameters."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void SDU__Parameters::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.SDU-Parameters."); val_ptr->value_elements = (SDU__Parameters_0**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new SDU__Parameters_0; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void SDU__Parameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SDU__Parameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SDU__Parameters::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SDU__Parameters::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (SDU__Parameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new SDU__Parameters_0; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int SDU__Parameters::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-Parameters."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int SDU__Parameters::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } SDU__Parameters_0* val = new SDU__Parameters_0; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (SDU__Parameters_0**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int SDU__Parameters::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-Parameters."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int SDU__Parameters::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void SDU__Parameters::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void SDU__Parameters::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void SDU__Parameters_template::copy_value(const SDU__Parameters& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.SDU-Parameters with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (SDU__Parameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new SDU__Parameters_0_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new SDU__Parameters_0_template; } } set_selection(SPECIFIC_VALUE); } void SDU__Parameters_template::copy_template(const SDU__Parameters_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (SDU__Parameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new SDU__Parameters_0_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new SDU__Parameters_0_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SDU__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SDU__Parameters_template(*other_value.implication_.precondition); implication_.implied_template = new SDU__Parameters_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters."); break; } set_selection(other_value); } boolean SDU__Parameters_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const SDU__Parameters_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const SDU__Parameters*)value_ptr)[value_index], legacy); else return ((const SDU__Parameters_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } SDU__Parameters_template::SDU__Parameters_template() { } SDU__Parameters_template::SDU__Parameters_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } SDU__Parameters_template::SDU__Parameters_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } SDU__Parameters_template::SDU__Parameters_template(const SDU__Parameters& other_value) { copy_value(other_value); } SDU__Parameters_template::SDU__Parameters_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.SDU-Parameters from an unbound optional field."); } } SDU__Parameters_template::SDU__Parameters_template(SDU__Parameters_template* p_precondition, SDU__Parameters_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SDU__Parameters_template::SDU__Parameters_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SDU__Parameters_template::SDU__Parameters_template(const SDU__Parameters_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } SDU__Parameters_template::~SDU__Parameters_template() { clean_up(); } void SDU__Parameters_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SDU__Parameters_template& SDU__Parameters_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SDU__Parameters_template& SDU__Parameters_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } SDU__Parameters_template& SDU__Parameters_template::operator=(const SDU__Parameters& other_value) { clean_up(); copy_value(other_value); return *this; } SDU__Parameters_template& SDU__Parameters_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.SDU-Parameters."); } return *this; } SDU__Parameters_template& SDU__Parameters_template::operator=(const SDU__Parameters_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } SDU__Parameters_0_template& SDU__Parameters_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.SDU-Parameters using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.SDU-Parameters."); break; } return *single_value.value_elements[index_value]; } SDU__Parameters_0_template& SDU__Parameters_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.SDU-Parameters."); return (*this)[(int)index_value]; } const SDU__Parameters_0_template& SDU__Parameters_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.SDU-Parameters using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.SDU-Parameters."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.SDU-Parameters: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const SDU__Parameters_0_template& SDU__Parameters_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.SDU-Parameters."); return (*this)[(int)index_value]; } void SDU__Parameters_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.SDU-Parameters."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (SDU__Parameters_0_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SDU__Parameters_0_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SDU__Parameters_0_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (SDU__Parameters_0_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int SDU__Parameters_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int SDU__Parameters_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-Parameters containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.SDU-Parameters"); } boolean SDU__Parameters_template::match(const SDU__Parameters& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters."); } return FALSE; } boolean SDU__Parameters_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } SDU__Parameters SDU__Parameters_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.SDU-Parameters."); SDU__Parameters ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } SDU__Parameters SDU__Parameters_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } SDU__Parameters SDU__Parameters_template::replace(int index, int len, const SDU__Parameters_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } SDU__Parameters SDU__Parameters_template::replace(int index, int len, const SDU__Parameters& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void SDU__Parameters_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new SDU__Parameters_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.SDU-Parameters."); } set_selection(template_type); } SDU__Parameters_template& SDU__Parameters_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.SDU-Parameters."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.SDU-Parameters."); return value_list.list_value[list_index]; } void SDU__Parameters_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void SDU__Parameters_template::log_match(const SDU__Parameters& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void SDU__Parameters_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters."); } } void SDU__Parameters_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.SDU-Parameters."); single_value.value_elements = (SDU__Parameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new SDU__Parameters_0_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SDU__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.SDU-Parameters."); } } boolean SDU__Parameters_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SDU__Parameters_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void SDU__Parameters_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SDU__Parameters_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { SDU__Parameters_template* precondition = new SDU__Parameters_template; precondition->set_param(*param.get_elem(0)); SDU__Parameters_template* implied_template = new SDU__Parameters_template; implied_template->set_param(*param.get_elem(1)); *this = SDU__Parameters_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.SDU-Parameters"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void SDU__Parameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SDU-Parameters"); } boolean SDU__Parameters_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } ResidualBitErrorRatio::ResidualBitErrorRatio() { } ResidualBitErrorRatio::ResidualBitErrorRatio(const INTEGER& par_mantissa, const INTEGER& par_exponent, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 >& par_iE__Extensions) : field_mantissa(par_mantissa), field_exponent(par_exponent), field_iE__Extensions(par_iE__Extensions) { } ResidualBitErrorRatio::ResidualBitErrorRatio(const ResidualBitErrorRatio& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ResidualBitErrorRatio."); if (other_value.mantissa().is_bound()) field_mantissa = other_value.mantissa(); else field_mantissa.clean_up(); if (other_value.exponent().is_bound()) field_exponent = other_value.exponent(); else field_exponent.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void ResidualBitErrorRatio::clean_up() { field_mantissa.clean_up(); field_exponent.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* ResidualBitErrorRatio::get_descriptor() const { return &ResidualBitErrorRatio_descr_; } ResidualBitErrorRatio& ResidualBitErrorRatio::operator=(const ResidualBitErrorRatio& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.ResidualBitErrorRatio."); if (other_value.mantissa().is_bound()) field_mantissa = other_value.mantissa(); else field_mantissa.clean_up(); if (other_value.exponent().is_bound()) field_exponent = other_value.exponent(); else field_exponent.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean ResidualBitErrorRatio::operator==(const ResidualBitErrorRatio& other_value) const { return field_mantissa==other_value.field_mantissa && field_exponent==other_value.field_exponent && field_iE__Extensions==other_value.field_iE__Extensions; } boolean ResidualBitErrorRatio::is_bound() const { return (field_mantissa.is_bound()) || (field_exponent.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean ResidualBitErrorRatio::is_value() const { return field_mantissa.is_value() && field_exponent.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int ResidualBitErrorRatio::size_of() const { int ret_val = 2; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void ResidualBitErrorRatio::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ mantissa := "); field_mantissa.log(); TTCN_Logger::log_event_str(", exponent := "); field_exponent.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void ResidualBitErrorRatio::set_implicit_omit() { if (mantissa().is_bound()) mantissa().set_implicit_omit(); if (exponent().is_bound()) exponent().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void ResidualBitErrorRatio::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mantissa().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) exponent().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "mantissa")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mantissa().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "exponent")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { exponent().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.ResidualBitErrorRatio: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.ResidualBitErrorRatio"); } } void ResidualBitErrorRatio::encode_text(Text_Buf& text_buf) const { field_mantissa.encode_text(text_buf); field_exponent.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void ResidualBitErrorRatio::decode_text(Text_Buf& text_buf) { field_mantissa.decode_text(text_buf); field_exponent.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void ResidualBitErrorRatio::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ResidualBitErrorRatio::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* ResidualBitErrorRatio::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("mantissa': "); new_tlv->add_TLV(field_mantissa.BER_encode_TLV(ResidualBitErrorRatio_mantissa_descr_, p_coding)); ec_1.set_msg("exponent': "); new_tlv->add_TLV(field_exponent.BER_encode_TLV(ResidualBitErrorRatio_exponent_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(ResidualBitErrorRatio_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean ResidualBitErrorRatio::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.ResidualBitErrorRatio' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("mantissa': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_mantissa.BER_decode_TLV(ResidualBitErrorRatio_mantissa_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("exponent': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_exponent.BER_decode_TLV(ResidualBitErrorRatio_exponent_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(ResidualBitErrorRatio_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int ResidualBitErrorRatio::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ResidualBitErrorRatio."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "mantissa"); enc_len += field_mantissa.JSON_encode(ResidualBitErrorRatio_mantissa_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "exponent"); enc_len += field_exponent.JSON_encode(ResidualBitErrorRatio_exponent_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(ResidualBitErrorRatio_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int ResidualBitErrorRatio::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean mantissa_found = FALSE; boolean exponent_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (8 == name_len && 0 == strncmp(fld_name, "mantissa", name_len)) { mantissa_found = TRUE; int ret_val = field_mantissa.JSON_decode(ResidualBitErrorRatio_mantissa_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 8, "mantissa"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (8 == name_len && 0 == strncmp(fld_name, "exponent", name_len)) { exponent_found = TRUE; int ret_val = field_exponent.JSON_decode(ResidualBitErrorRatio_exponent_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 8, "exponent"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(ResidualBitErrorRatio_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!mantissa_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "mantissa"); return JSON_ERROR_FATAL; } if (!exponent_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "exponent"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int ResidualBitErrorRatio::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 128; } p_buf.put_c(c); field_mantissa.OER_encode(ResidualBitErrorRatio_mantissa_descr_, p_buf); field_exponent.OER_encode(ResidualBitErrorRatio_exponent_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(ResidualBitErrorRatio_iE__Extensions_descr_, p_buf); return 0; } int ResidualBitErrorRatio::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); field_mantissa.OER_decode(ResidualBitErrorRatio_mantissa_descr_, p_buf, p_oer); field_exponent.OER_decode(ResidualBitErrorRatio_exponent_descr_, p_buf, p_oer); if (uc[0] & 128) field_iE__Extensions.OER_decode(ResidualBitErrorRatio_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; return 0; } void ResidualBitErrorRatio::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_mantissa.PER_encode(ResidualBitErrorRatio_mantissa_descr_, p_buf, p_options); field_exponent.PER_encode(ResidualBitErrorRatio_exponent_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(ResidualBitErrorRatio_iE__Extensions_descr_, p_buf, p_options); } void ResidualBitErrorRatio::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_mantissa.PER_decode(ResidualBitErrorRatio_mantissa_descr_, p_buf, p_options); field_exponent.PER_decode(ResidualBitErrorRatio_exponent_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(ResidualBitErrorRatio_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; } struct ResidualBitErrorRatio_template::single_value_struct { INTEGER_template field_mantissa; INTEGER_template field_exponent; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template field_iE__Extensions; }; void ResidualBitErrorRatio_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_mantissa = ANY_VALUE; single_value->field_exponent = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void ResidualBitErrorRatio_template::copy_value(const ResidualBitErrorRatio& other_value) { single_value = new single_value_struct; if (other_value.mantissa().is_bound()) { single_value->field_mantissa = other_value.mantissa(); } else { single_value->field_mantissa.clean_up(); } if (other_value.exponent().is_bound()) { single_value->field_exponent = other_value.exponent(); } else { single_value->field_exponent.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void ResidualBitErrorRatio_template::copy_template(const ResidualBitErrorRatio_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.mantissa().get_selection()) { single_value->field_mantissa = other_value.mantissa(); } else { single_value->field_mantissa.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.exponent().get_selection()) { single_value->field_exponent = other_value.exponent(); } else { single_value->field_exponent.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new ResidualBitErrorRatio_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new ResidualBitErrorRatio_template(*other_value.implication_.precondition); implication_.implied_template = new ResidualBitErrorRatio_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ResidualBitErrorRatio."); break; } set_selection(other_value); } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template() { } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(const ResidualBitErrorRatio& other_value) { copy_value(other_value); } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ResidualBitErrorRatio&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ResidualBitErrorRatio from an unbound optional field."); } } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(ResidualBitErrorRatio_template* p_precondition, ResidualBitErrorRatio_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ResidualBitErrorRatio_template::ResidualBitErrorRatio_template(const ResidualBitErrorRatio_template& other_value) : Base_Template() { copy_template(other_value); } ResidualBitErrorRatio_template::~ResidualBitErrorRatio_template() { clean_up(); } ResidualBitErrorRatio_template& ResidualBitErrorRatio_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ResidualBitErrorRatio_template& ResidualBitErrorRatio_template::operator=(const ResidualBitErrorRatio& other_value) { clean_up(); copy_value(other_value); return *this; } ResidualBitErrorRatio_template& ResidualBitErrorRatio_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ResidualBitErrorRatio&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ResidualBitErrorRatio."); } return *this; } ResidualBitErrorRatio_template& ResidualBitErrorRatio_template::operator=(const ResidualBitErrorRatio_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean ResidualBitErrorRatio_template::match(const ResidualBitErrorRatio& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.mantissa().is_bound()) return FALSE; if(!single_value->field_mantissa.match(other_value.mantissa(), legacy))return FALSE; if(!other_value.exponent().is_bound()) return FALSE; if(!single_value->field_exponent.match(other_value.exponent(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.ResidualBitErrorRatio."); } return FALSE; } boolean ResidualBitErrorRatio_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_mantissa.is_bound() || single_value->field_exponent.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean ResidualBitErrorRatio_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_mantissa.is_value() && single_value->field_exponent.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void ResidualBitErrorRatio_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } ResidualBitErrorRatio ResidualBitErrorRatio_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ResidualBitErrorRatio."); ResidualBitErrorRatio ret_val; if (single_value->field_mantissa.is_bound()) { ret_val.mantissa() = single_value->field_mantissa.valueof(); } if (single_value->field_exponent.is_bound()) { ret_val.exponent() = single_value->field_exponent.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void ResidualBitErrorRatio_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.ResidualBitErrorRatio."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new ResidualBitErrorRatio_template[list_length]; } ResidualBitErrorRatio_template& ResidualBitErrorRatio_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.ResidualBitErrorRatio."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.ResidualBitErrorRatio."); return value_list.list_value[list_index]; } INTEGER_template& ResidualBitErrorRatio_template::mantissa() { set_specific(); return single_value->field_mantissa; } const INTEGER_template& ResidualBitErrorRatio_template::mantissa() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field mantissa of a non-specific template of type @RANAP-IEs.ResidualBitErrorRatio."); return single_value->field_mantissa; } INTEGER_template& ResidualBitErrorRatio_template::exponent() { set_specific(); return single_value->field_exponent; } const INTEGER_template& ResidualBitErrorRatio_template::exponent() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field exponent of a non-specific template of type @RANAP-IEs.ResidualBitErrorRatio."); return single_value->field_exponent; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& ResidualBitErrorRatio_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& ResidualBitErrorRatio_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.ResidualBitErrorRatio."); return single_value->field_iE__Extensions; } int ResidualBitErrorRatio_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.ResidualBitErrorRatio containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ResidualBitErrorRatio."); } return 0; } void ResidualBitErrorRatio_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ mantissa := "); single_value->field_mantissa.log(); TTCN_Logger::log_event_str(", exponent := "); single_value->field_exponent.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void ResidualBitErrorRatio_template::log_match(const ResidualBitErrorRatio& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_mantissa.match(match_value.mantissa(), legacy)){ TTCN_Logger::log_logmatch_info(".mantissa"); single_value->field_mantissa.log_match(match_value.mantissa(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_exponent.match(match_value.exponent(), legacy)){ TTCN_Logger::log_logmatch_info(".exponent"); single_value->field_exponent.log_match(match_value.exponent(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ mantissa := "); single_value->field_mantissa.log_match(match_value.mantissa(), legacy); TTCN_Logger::log_event_str(", exponent := "); single_value->field_exponent.log_match(match_value.exponent(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void ResidualBitErrorRatio_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (mantissa().is_bound()) mantissa().set_implicit_omit(); if (exponent().is_bound()) exponent().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void ResidualBitErrorRatio_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_mantissa.encode_text(text_buf); single_value->field_exponent.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ResidualBitErrorRatio."); } } void ResidualBitErrorRatio_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_mantissa.decode_text(text_buf); single_value->field_exponent.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new ResidualBitErrorRatio_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.ResidualBitErrorRatio."); } } void ResidualBitErrorRatio_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { ResidualBitErrorRatio_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mantissa().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) exponent().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "mantissa")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mantissa().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "exponent")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { exponent().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.ResidualBitErrorRatio: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { ResidualBitErrorRatio_template* precondition = new ResidualBitErrorRatio_template; precondition->set_param(*param.get_elem(0)); ResidualBitErrorRatio_template* implied_template = new ResidualBitErrorRatio_template; implied_template->set_param(*param.get_elem(1)); *this = ResidualBitErrorRatio_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.ResidualBitErrorRatio"); } is_ifpresent = param.get_ifpresent(); } void ResidualBitErrorRatio_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_mantissa.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ResidualBitErrorRatio"); single_value->field_exponent.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ResidualBitErrorRatio"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ResidualBitErrorRatio"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ResidualBitErrorRatio"); } boolean ResidualBitErrorRatio_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ResidualBitErrorRatio_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst6"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst6_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst5"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst5_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean DeliveryOfErroneousSDU::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return enum_value > other_value; } boolean DeliveryOfErroneousSDU::operator>(const DeliveryOfErroneousSDU& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return enum_value > other_value.enum_value; } const char *DeliveryOfErroneousSDU::enum_to_str(enum_type enum_par) { switch (enum_par) { case yes: return "yes"; case no: return "no"; case no__error__detection__consideration: return "no_error_detection_consideration"; default: return ""; } } DeliveryOfErroneousSDU::enum_type DeliveryOfErroneousSDU::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "yes")) return yes; if (!strcmp(str_par, "no")) return no; if (!strcmp(str_par, "no_error_detection_consideration")) return no__error__detection__consideration; } return UNKNOWN_VALUE; } boolean DeliveryOfErroneousSDU::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: return TRUE; default: return FALSE; } } int DeliveryOfErroneousSDU::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int DeliveryOfErroneousSDU::enum2int(const DeliveryOfErroneousSDU& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void DeliveryOfErroneousSDU::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", int_val); enum_value = (enum_type)int_val; } DeliveryOfErroneousSDU::operator DeliveryOfErroneousSDU::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return enum_value; } void DeliveryOfErroneousSDU::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void DeliveryOfErroneousSDU::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.DeliveryOfErroneousSDU"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.DeliveryOfErroneousSDU."); } } void DeliveryOfErroneousSDU::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); text_buf.push_int(enum_value); } void DeliveryOfErroneousSDU::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", enum_value); } void DeliveryOfErroneousSDU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void DeliveryOfErroneousSDU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* DeliveryOfErroneousSDU::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean DeliveryOfErroneousSDU::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.DeliveryOfErroneousSDU: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int DeliveryOfErroneousSDU::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int DeliveryOfErroneousSDU::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = yes; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int DeliveryOfErroneousSDU::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int DeliveryOfErroneousSDU::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void DeliveryOfErroneousSDU::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; switch (enum_value) { case yes: enc_val = 0; break; case no: enc_val = 1; break; case no__error__detection__consideration: enc_val = 2; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } INTEGER::PER_encode_int(p_buf, enc_val, 2); } void DeliveryOfErroneousSDU::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; switch (dec_int) { case 0: enum_value = yes; break; case 1: enum_value = no; break; case 2: enum_value = no__error__detection__consideration; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", dec_int); break; } } void DeliveryOfErroneousSDU_template::copy_template(const DeliveryOfErroneousSDU_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new DeliveryOfErroneousSDU_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new DeliveryOfErroneousSDU_template(*other_value.implication_.precondition); implication_.implied_template = new DeliveryOfErroneousSDU_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template() { } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!DeliveryOfErroneousSDU::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU with unknown numeric value %d.", other_value); single_value = (DeliveryOfErroneousSDU::enum_type)other_value; } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(DeliveryOfErroneousSDU::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(const DeliveryOfErroneousSDU& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == DeliveryOfErroneousSDU::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); single_value = other_value.enum_value; } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (DeliveryOfErroneousSDU::enum_type)(const DeliveryOfErroneousSDU&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU from an unbound optional field."); } } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(DeliveryOfErroneousSDU_template* p_precondition, DeliveryOfErroneousSDU_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } DeliveryOfErroneousSDU_template::DeliveryOfErroneousSDU_template(const DeliveryOfErroneousSDU_template& other_value) : Base_Template() { copy_template(other_value); } DeliveryOfErroneousSDU_template::~DeliveryOfErroneousSDU_template() { clean_up(); } boolean DeliveryOfErroneousSDU_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean DeliveryOfErroneousSDU_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != DeliveryOfErroneousSDU::UNBOUND_VALUE; } void DeliveryOfErroneousSDU_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(int other_value) { if (!DeliveryOfErroneousSDU::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (DeliveryOfErroneousSDU::enum_type)other_value; return *this; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(DeliveryOfErroneousSDU::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(const DeliveryOfErroneousSDU& other_value) { if (other_value.enum_value == DeliveryOfErroneousSDU::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (DeliveryOfErroneousSDU::enum_type)(const DeliveryOfErroneousSDU&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } return *this; } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::operator=(const DeliveryOfErroneousSDU_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean DeliveryOfErroneousSDU_template::match(DeliveryOfErroneousSDU::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } return FALSE; } boolean DeliveryOfErroneousSDU_template::match(const DeliveryOfErroneousSDU& other_value, boolean) const { if (other_value.enum_value == DeliveryOfErroneousSDU::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU with an unbound value."); return match(other_value.enum_value); } DeliveryOfErroneousSDU::enum_type DeliveryOfErroneousSDU_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return single_value; } void DeliveryOfErroneousSDU_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new DeliveryOfErroneousSDU_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } } DeliveryOfErroneousSDU_template& DeliveryOfErroneousSDU_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); return value_list.list_value[list_index]; } void DeliveryOfErroneousSDU_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(DeliveryOfErroneousSDU::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void DeliveryOfErroneousSDU_template::log_match(const DeliveryOfErroneousSDU& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void DeliveryOfErroneousSDU_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } } void DeliveryOfErroneousSDU_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (DeliveryOfErroneousSDU::enum_type)text_buf.pull_int().get_val(); if (!DeliveryOfErroneousSDU::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new DeliveryOfErroneousSDU_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.DeliveryOfErroneousSDU."); } } boolean DeliveryOfErroneousSDU_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean DeliveryOfErroneousSDU_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { DeliveryOfErroneousSDU_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { DeliveryOfErroneousSDU::enum_type enum_val = DeliveryOfErroneousSDU::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!DeliveryOfErroneousSDU::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.DeliveryOfErroneousSDU."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { DeliveryOfErroneousSDU_template* precondition = new DeliveryOfErroneousSDU_template; precondition->set_param(*m_p->get_elem(0)); DeliveryOfErroneousSDU_template* implied_template = new DeliveryOfErroneousSDU_template; implied_template->set_param(*m_p->get_elem(1)); *this = DeliveryOfErroneousSDU_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.DeliveryOfErroneousSDU"); } is_ifpresent = param.get_ifpresent(); } void DeliveryOfErroneousSDU_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.DeliveryOfErroneousSDU"); } SDU__Parameters_0::SDU__Parameters_0() { } SDU__Parameters_0::SDU__Parameters_0(const OPTIONAL< SDU__ErrorRatio >& par_sDU__ErrorRatio, const ResidualBitErrorRatio& par_residualBitErrorRatio, const DeliveryOfErroneousSDU& par_deliveryOfErroneousSDU, const OPTIONAL< SDU__FormatInformationParameters >& par_sDU__FormatInformationParameters, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 >& par_iE__Extensions) : field_sDU__ErrorRatio(par_sDU__ErrorRatio), field_residualBitErrorRatio(par_residualBitErrorRatio), field_deliveryOfErroneousSDU(par_deliveryOfErroneousSDU), field_sDU__FormatInformationParameters(par_sDU__FormatInformationParameters), field_iE__Extensions(par_iE__Extensions) { } SDU__Parameters_0::SDU__Parameters_0(const SDU__Parameters_0& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); if (other_value.sDU__ErrorRatio().is_bound()) field_sDU__ErrorRatio = other_value.sDU__ErrorRatio(); else field_sDU__ErrorRatio.clean_up(); if (other_value.residualBitErrorRatio().is_bound()) field_residualBitErrorRatio = other_value.residualBitErrorRatio(); else field_residualBitErrorRatio.clean_up(); if (other_value.deliveryOfErroneousSDU().is_bound()) field_deliveryOfErroneousSDU = other_value.deliveryOfErroneousSDU(); else field_deliveryOfErroneousSDU.clean_up(); if (other_value.sDU__FormatInformationParameters().is_bound()) field_sDU__FormatInformationParameters = other_value.sDU__FormatInformationParameters(); else field_sDU__FormatInformationParameters.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void SDU__Parameters_0::clean_up() { field_sDU__ErrorRatio.clean_up(); field_residualBitErrorRatio.clean_up(); field_deliveryOfErroneousSDU.clean_up(); field_sDU__FormatInformationParameters.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* SDU__Parameters_0::get_descriptor() const { return &SDU__Parameters_0_descr_; } SDU__Parameters_0& SDU__Parameters_0::operator=(const SDU__Parameters_0& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); if (other_value.sDU__ErrorRatio().is_bound()) field_sDU__ErrorRatio = other_value.sDU__ErrorRatio(); else field_sDU__ErrorRatio.clean_up(); if (other_value.residualBitErrorRatio().is_bound()) field_residualBitErrorRatio = other_value.residualBitErrorRatio(); else field_residualBitErrorRatio.clean_up(); if (other_value.deliveryOfErroneousSDU().is_bound()) field_deliveryOfErroneousSDU = other_value.deliveryOfErroneousSDU(); else field_deliveryOfErroneousSDU.clean_up(); if (other_value.sDU__FormatInformationParameters().is_bound()) field_sDU__FormatInformationParameters = other_value.sDU__FormatInformationParameters(); else field_sDU__FormatInformationParameters.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean SDU__Parameters_0::operator==(const SDU__Parameters_0& other_value) const { return field_sDU__ErrorRatio==other_value.field_sDU__ErrorRatio && field_residualBitErrorRatio==other_value.field_residualBitErrorRatio && field_deliveryOfErroneousSDU==other_value.field_deliveryOfErroneousSDU && field_sDU__FormatInformationParameters==other_value.field_sDU__FormatInformationParameters && field_iE__Extensions==other_value.field_iE__Extensions; } boolean SDU__Parameters_0::is_bound() const { return (OPTIONAL_OMIT == field_sDU__ErrorRatio.get_selection() || field_sDU__ErrorRatio.is_bound()) || (field_residualBitErrorRatio.is_bound()) || (field_deliveryOfErroneousSDU.is_bound()) || (OPTIONAL_OMIT == field_sDU__FormatInformationParameters.get_selection() || field_sDU__FormatInformationParameters.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean SDU__Parameters_0::is_value() const { return (OPTIONAL_OMIT == field_sDU__ErrorRatio.get_selection() || field_sDU__ErrorRatio.is_value()) && field_residualBitErrorRatio.is_value() && field_deliveryOfErroneousSDU.is_value() && (OPTIONAL_OMIT == field_sDU__FormatInformationParameters.get_selection() || field_sDU__FormatInformationParameters.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int SDU__Parameters_0::size_of() const { int ret_val = 2; if (field_sDU__ErrorRatio.ispresent()) ret_val++; if (field_sDU__FormatInformationParameters.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void SDU__Parameters_0::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ sDU_ErrorRatio := "); field_sDU__ErrorRatio.log(); TTCN_Logger::log_event_str(", residualBitErrorRatio := "); field_residualBitErrorRatio.log(); TTCN_Logger::log_event_str(", deliveryOfErroneousSDU := "); field_deliveryOfErroneousSDU.log(); TTCN_Logger::log_event_str(", sDU_FormatInformationParameters := "); field_sDU__FormatInformationParameters.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void SDU__Parameters_0::set_implicit_omit() { if (!sDU__ErrorRatio().is_bound()) sDU__ErrorRatio() = OMIT_VALUE; else sDU__ErrorRatio().set_implicit_omit(); if (residualBitErrorRatio().is_bound()) residualBitErrorRatio().set_implicit_omit(); if (deliveryOfErroneousSDU().is_bound()) deliveryOfErroneousSDU().set_implicit_omit(); if (!sDU__FormatInformationParameters().is_bound()) sDU__FormatInformationParameters() = OMIT_VALUE; else sDU__FormatInformationParameters().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__Parameters_0::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (50 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sDU__ErrorRatio().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) residualBitErrorRatio().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deliveryOfErroneousSDU().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sDU__FormatInformationParameters().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_ErrorRatio")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__ErrorRatio().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "residualBitErrorRatio")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { residualBitErrorRatio().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "deliveryOfErroneousSDU")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { deliveryOfErroneousSDU().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_FormatInformationParameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__FormatInformationParameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-Parameters.SEQUENCE: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.SDU-Parameters.SEQUENCE"); } } void SDU__Parameters_0::encode_text(Text_Buf& text_buf) const { field_sDU__ErrorRatio.encode_text(text_buf); field_residualBitErrorRatio.encode_text(text_buf); field_deliveryOfErroneousSDU.encode_text(text_buf); field_sDU__FormatInformationParameters.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void SDU__Parameters_0::decode_text(Text_Buf& text_buf) { field_sDU__ErrorRatio.decode_text(text_buf); field_residualBitErrorRatio.decode_text(text_buf); field_deliveryOfErroneousSDU.decode_text(text_buf); field_sDU__FormatInformationParameters.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void SDU__Parameters_0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SDU__Parameters_0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SDU__Parameters_0::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("sDU_ErrorRatio': "); new_tlv->add_TLV(field_sDU__ErrorRatio.BER_encode_TLV(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_coding)); ec_1.set_msg("residualBitErrorRatio': "); new_tlv->add_TLV(field_residualBitErrorRatio.BER_encode_TLV(SDU__Parameters_0_residualBitErrorRatio_descr_, p_coding)); ec_1.set_msg("deliveryOfErroneousSDU': "); new_tlv->add_TLV(field_deliveryOfErroneousSDU.BER_encode_TLV(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_coding)); ec_1.set_msg("sDU_FormatInformationParameters': "); new_tlv->add_TLV(field_sDU__FormatInformationParameters.BER_encode_TLV(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(SDU__Parameters_0_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SDU__Parameters_0::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.SDU-Parameters.SEQUENCE' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("sDU_ErrorRatio': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_sDU__ErrorRatio=OMIT_VALUE; else { field_sDU__ErrorRatio.BER_decode_TLV(SDU__Parameters_0_sDU__ErrorRatio_descr_, tmp_tlv, L_form); if(field_sDU__ErrorRatio.ispresent()) tlv_present=FALSE; } ec_2.set_msg("residualBitErrorRatio': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_residualBitErrorRatio.BER_decode_TLV(SDU__Parameters_0_residualBitErrorRatio_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("deliveryOfErroneousSDU': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_deliveryOfErroneousSDU.BER_decode_TLV(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("sDU_FormatInformationParameters': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_sDU__FormatInformationParameters=OMIT_VALUE; else { field_sDU__FormatInformationParameters.BER_decode_TLV(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, tmp_tlv, L_form); if(field_sDU__FormatInformationParameters.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(SDU__Parameters_0_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int SDU__Parameters_0::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); if (field_sDU__ErrorRatio.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "sDU_ErrorRatio"); enc_len += field_sDU__ErrorRatio.JSON_encode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "residualBitErrorRatio"); enc_len += field_residualBitErrorRatio.JSON_encode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "deliveryOfErroneousSDU"); enc_len += field_deliveryOfErroneousSDU.JSON_encode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_tok, FALSE); } if (field_sDU__FormatInformationParameters.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "sDU_FormatInformationParameters"); enc_len += field_sDU__FormatInformationParameters.JSON_encode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(SDU__Parameters_0_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int SDU__Parameters_0::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean sDU__ErrorRatio_found = FALSE; boolean residualBitErrorRatio_found = FALSE; boolean deliveryOfErroneousSDU_found = FALSE; boolean sDU__FormatInformationParameters_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (14 == name_len && 0 == strncmp(fld_name, "sDU_ErrorRatio", name_len)) { sDU__ErrorRatio_found = TRUE; int ret_val = field_sDU__ErrorRatio.JSON_decode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "sDU_ErrorRatio"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (21 == name_len && 0 == strncmp(fld_name, "residualBitErrorRatio", name_len)) { residualBitErrorRatio_found = TRUE; int ret_val = field_residualBitErrorRatio.JSON_decode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 21, "residualBitErrorRatio"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (22 == name_len && 0 == strncmp(fld_name, "deliveryOfErroneousSDU", name_len)) { deliveryOfErroneousSDU_found = TRUE; int ret_val = field_deliveryOfErroneousSDU.JSON_decode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 22, "deliveryOfErroneousSDU"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (31 == name_len && 0 == strncmp(fld_name, "sDU_FormatInformationParameters", name_len)) { sDU__FormatInformationParameters_found = TRUE; int ret_val = field_sDU__FormatInformationParameters.JSON_decode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 31, "sDU_FormatInformationParameters"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(SDU__Parameters_0_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!sDU__ErrorRatio_found) { field_sDU__ErrorRatio = OMIT_VALUE; } if (!residualBitErrorRatio_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "residualBitErrorRatio"); return JSON_ERROR_FATAL; } if (!deliveryOfErroneousSDU_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "deliveryOfErroneousSDU"); return JSON_ERROR_FATAL; } if (!sDU__FormatInformationParameters_found) { field_sDU__FormatInformationParameters = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int SDU__Parameters_0::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_sDU__ErrorRatio.is_present()) { c |= 64; } if (field_sDU__FormatInformationParameters.is_present()) { c |= 32; } if (field_iE__Extensions.is_present()) { c |= 16; } p_buf.put_c(c); if (field_sDU__ErrorRatio.is_present()) field_sDU__ErrorRatio.OER_encode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_buf); field_residualBitErrorRatio.OER_encode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_buf); field_deliveryOfErroneousSDU.OER_encode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_buf); if (field_sDU__FormatInformationParameters.is_present()) field_sDU__FormatInformationParameters.OER_encode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(SDU__Parameters_0_iE__Extensions_descr_, p_buf); return 0; } int SDU__Parameters_0::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } if (uc[0] & 64) field_sDU__ErrorRatio.OER_decode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_buf, p_oer); else field_sDU__ErrorRatio = OMIT_VALUE; field_residualBitErrorRatio.OER_decode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_buf, p_oer); field_deliveryOfErroneousSDU.OER_decode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_buf, p_oer); if (uc[0] & 32) field_sDU__FormatInformationParameters.OER_decode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_buf, p_oer); else field_sDU__FormatInformationParameters = OMIT_VALUE; if (uc[0] & 16) field_iE__Extensions.OER_decode(SDU__Parameters_0_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void SDU__Parameters_0::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_sDU__ErrorRatio_present = field_sDU__ErrorRatio.is_present(); p_buf.PER_put_bit(field_sDU__ErrorRatio_present); boolean field_sDU__FormatInformationParameters_present = field_sDU__FormatInformationParameters.is_present(); p_buf.PER_put_bit(field_sDU__FormatInformationParameters_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); if (field_sDU__ErrorRatio_present) field_sDU__ErrorRatio.PER_encode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_buf, p_options); field_residualBitErrorRatio.PER_encode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_buf, p_options); field_deliveryOfErroneousSDU.PER_encode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_buf, p_options); if (field_sDU__FormatInformationParameters_present) field_sDU__FormatInformationParameters.PER_encode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(SDU__Parameters_0_iE__Extensions_descr_, p_buf, p_options); } void SDU__Parameters_0::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_sDU__ErrorRatio_present = p_buf.PER_get_bit(); boolean field_sDU__FormatInformationParameters_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); if (field_sDU__ErrorRatio_present) field_sDU__ErrorRatio.PER_decode(SDU__Parameters_0_sDU__ErrorRatio_descr_, p_buf, p_options); else field_sDU__ErrorRatio = OMIT_VALUE; field_residualBitErrorRatio.PER_decode(SDU__Parameters_0_residualBitErrorRatio_descr_, p_buf, p_options); field_deliveryOfErroneousSDU.PER_decode(SDU__Parameters_0_deliveryOfErroneousSDU_descr_, p_buf, p_options); if (field_sDU__FormatInformationParameters_present) field_sDU__FormatInformationParameters.PER_decode(SDU__Parameters_0_sDU__FormatInformationParameters_descr_, p_buf, p_options); else field_sDU__FormatInformationParameters = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(SDU__Parameters_0_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct SDU__Parameters_0_template::single_value_struct { SDU__ErrorRatio_template field_sDU__ErrorRatio; ResidualBitErrorRatio_template field_residualBitErrorRatio; DeliveryOfErroneousSDU_template field_deliveryOfErroneousSDU; SDU__FormatInformationParameters_template field_sDU__FormatInformationParameters; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template field_iE__Extensions; }; void SDU__Parameters_0_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_sDU__ErrorRatio = ANY_OR_OMIT; single_value->field_residualBitErrorRatio = ANY_VALUE; single_value->field_deliveryOfErroneousSDU = ANY_VALUE; single_value->field_sDU__FormatInformationParameters = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void SDU__Parameters_0_template::copy_value(const SDU__Parameters_0& other_value) { single_value = new single_value_struct; if (other_value.sDU__ErrorRatio().is_bound()) { if (other_value.sDU__ErrorRatio().ispresent()) single_value->field_sDU__ErrorRatio = other_value.sDU__ErrorRatio()(); else single_value->field_sDU__ErrorRatio = OMIT_VALUE; } else { single_value->field_sDU__ErrorRatio.clean_up(); } if (other_value.residualBitErrorRatio().is_bound()) { single_value->field_residualBitErrorRatio = other_value.residualBitErrorRatio(); } else { single_value->field_residualBitErrorRatio.clean_up(); } if (other_value.deliveryOfErroneousSDU().is_bound()) { single_value->field_deliveryOfErroneousSDU = other_value.deliveryOfErroneousSDU(); } else { single_value->field_deliveryOfErroneousSDU.clean_up(); } if (other_value.sDU__FormatInformationParameters().is_bound()) { if (other_value.sDU__FormatInformationParameters().ispresent()) single_value->field_sDU__FormatInformationParameters = other_value.sDU__FormatInformationParameters()(); else single_value->field_sDU__FormatInformationParameters = OMIT_VALUE; } else { single_value->field_sDU__FormatInformationParameters.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void SDU__Parameters_0_template::copy_template(const SDU__Parameters_0_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.sDU__ErrorRatio().get_selection()) { single_value->field_sDU__ErrorRatio = other_value.sDU__ErrorRatio(); } else { single_value->field_sDU__ErrorRatio.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.residualBitErrorRatio().get_selection()) { single_value->field_residualBitErrorRatio = other_value.residualBitErrorRatio(); } else { single_value->field_residualBitErrorRatio.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.deliveryOfErroneousSDU().get_selection()) { single_value->field_deliveryOfErroneousSDU = other_value.deliveryOfErroneousSDU(); } else { single_value->field_deliveryOfErroneousSDU.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.sDU__FormatInformationParameters().get_selection()) { single_value->field_sDU__FormatInformationParameters = other_value.sDU__FormatInformationParameters(); } else { single_value->field_sDU__FormatInformationParameters.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SDU__Parameters_0_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SDU__Parameters_0_template(*other_value.implication_.precondition); implication_.implied_template = new SDU__Parameters_0_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); break; } set_selection(other_value); } SDU__Parameters_0_template::SDU__Parameters_0_template() { } SDU__Parameters_0_template::SDU__Parameters_0_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SDU__Parameters_0_template::SDU__Parameters_0_template(const SDU__Parameters_0& other_value) { copy_value(other_value); } SDU__Parameters_0_template::SDU__Parameters_0_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__Parameters_0&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE from an unbound optional field."); } } SDU__Parameters_0_template::SDU__Parameters_0_template(SDU__Parameters_0_template* p_precondition, SDU__Parameters_0_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SDU__Parameters_0_template::SDU__Parameters_0_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SDU__Parameters_0_template::SDU__Parameters_0_template(const SDU__Parameters_0_template& other_value) : Base_Template() { copy_template(other_value); } SDU__Parameters_0_template::~SDU__Parameters_0_template() { clean_up(); } SDU__Parameters_0_template& SDU__Parameters_0_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SDU__Parameters_0_template& SDU__Parameters_0_template::operator=(const SDU__Parameters_0& other_value) { clean_up(); copy_value(other_value); return *this; } SDU__Parameters_0_template& SDU__Parameters_0_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__Parameters_0&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); } return *this; } SDU__Parameters_0_template& SDU__Parameters_0_template::operator=(const SDU__Parameters_0_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SDU__Parameters_0_template::match(const SDU__Parameters_0& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.sDU__ErrorRatio().is_bound()) return FALSE; if((other_value.sDU__ErrorRatio().ispresent() ? !single_value->field_sDU__ErrorRatio.match((const SDU__ErrorRatio&)other_value.sDU__ErrorRatio(), legacy) : !single_value->field_sDU__ErrorRatio.match_omit(legacy)))return FALSE; if(!other_value.residualBitErrorRatio().is_bound()) return FALSE; if(!single_value->field_residualBitErrorRatio.match(other_value.residualBitErrorRatio(), legacy))return FALSE; if(!other_value.deliveryOfErroneousSDU().is_bound()) return FALSE; if(!single_value->field_deliveryOfErroneousSDU.match(other_value.deliveryOfErroneousSDU(), legacy))return FALSE; if(!other_value.sDU__FormatInformationParameters().is_bound()) return FALSE; if((other_value.sDU__FormatInformationParameters().ispresent() ? !single_value->field_sDU__FormatInformationParameters.match((const SDU__FormatInformationParameters&)other_value.sDU__FormatInformationParameters(), legacy) : !single_value->field_sDU__FormatInformationParameters.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); } return FALSE; } boolean SDU__Parameters_0_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return (single_value->field_sDU__ErrorRatio.is_omit() || single_value->field_sDU__ErrorRatio.is_bound()) || single_value->field_residualBitErrorRatio.is_bound() || single_value->field_deliveryOfErroneousSDU.is_bound() || (single_value->field_sDU__FormatInformationParameters.is_omit() || single_value->field_sDU__FormatInformationParameters.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean SDU__Parameters_0_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return (single_value->field_sDU__ErrorRatio.is_omit() || single_value->field_sDU__ErrorRatio.is_value()) && single_value->field_residualBitErrorRatio.is_value() && single_value->field_deliveryOfErroneousSDU.is_value() && (single_value->field_sDU__FormatInformationParameters.is_omit() || single_value->field_sDU__FormatInformationParameters.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void SDU__Parameters_0_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SDU__Parameters_0 SDU__Parameters_0_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); SDU__Parameters_0 ret_val; if (single_value->field_sDU__ErrorRatio.is_omit()) ret_val.sDU__ErrorRatio() = OMIT_VALUE; else if (single_value->field_sDU__ErrorRatio.is_bound()) { ret_val.sDU__ErrorRatio() = single_value->field_sDU__ErrorRatio.valueof(); } if (single_value->field_residualBitErrorRatio.is_bound()) { ret_val.residualBitErrorRatio() = single_value->field_residualBitErrorRatio.valueof(); } if (single_value->field_deliveryOfErroneousSDU.is_bound()) { ret_val.deliveryOfErroneousSDU() = single_value->field_deliveryOfErroneousSDU.valueof(); } if (single_value->field_sDU__FormatInformationParameters.is_omit()) ret_val.sDU__FormatInformationParameters() = OMIT_VALUE; else if (single_value->field_sDU__FormatInformationParameters.is_bound()) { ret_val.sDU__FormatInformationParameters() = single_value->field_sDU__FormatInformationParameters.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void SDU__Parameters_0_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SDU__Parameters_0_template[list_length]; } SDU__Parameters_0_template& SDU__Parameters_0_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return value_list.list_value[list_index]; } SDU__ErrorRatio_template& SDU__Parameters_0_template::sDU__ErrorRatio() { set_specific(); return single_value->field_sDU__ErrorRatio; } const SDU__ErrorRatio_template& SDU__Parameters_0_template::sDU__ErrorRatio() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sDU_ErrorRatio of a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return single_value->field_sDU__ErrorRatio; } ResidualBitErrorRatio_template& SDU__Parameters_0_template::residualBitErrorRatio() { set_specific(); return single_value->field_residualBitErrorRatio; } const ResidualBitErrorRatio_template& SDU__Parameters_0_template::residualBitErrorRatio() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field residualBitErrorRatio of a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return single_value->field_residualBitErrorRatio; } DeliveryOfErroneousSDU_template& SDU__Parameters_0_template::deliveryOfErroneousSDU() { set_specific(); return single_value->field_deliveryOfErroneousSDU; } const DeliveryOfErroneousSDU_template& SDU__Parameters_0_template::deliveryOfErroneousSDU() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deliveryOfErroneousSDU of a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return single_value->field_deliveryOfErroneousSDU; } SDU__FormatInformationParameters_template& SDU__Parameters_0_template::sDU__FormatInformationParameters() { set_specific(); return single_value->field_sDU__FormatInformationParameters; } const SDU__FormatInformationParameters_template& SDU__Parameters_0_template::sDU__FormatInformationParameters() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sDU_FormatInformationParameters of a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return single_value->field_sDU__FormatInformationParameters; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& SDU__Parameters_0_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& SDU__Parameters_0_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); return single_value->field_iE__Extensions; } int SDU__Parameters_0_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_sDU__ErrorRatio.is_present()) ret_val++; if (single_value->field_sDU__FormatInformationParameters.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); } return 0; } void SDU__Parameters_0_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ sDU_ErrorRatio := "); single_value->field_sDU__ErrorRatio.log(); TTCN_Logger::log_event_str(", residualBitErrorRatio := "); single_value->field_residualBitErrorRatio.log(); TTCN_Logger::log_event_str(", deliveryOfErroneousSDU := "); single_value->field_deliveryOfErroneousSDU.log(); TTCN_Logger::log_event_str(", sDU_FormatInformationParameters := "); single_value->field_sDU__FormatInformationParameters.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void SDU__Parameters_0_template::log_match(const SDU__Parameters_0& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if (match_value.sDU__ErrorRatio().ispresent()){ if(!single_value->field_sDU__ErrorRatio.match(match_value.sDU__ErrorRatio(), legacy)){ TTCN_Logger::log_logmatch_info(".sDU_ErrorRatio"); single_value->field_sDU__ErrorRatio.log_match(match_value.sDU__ErrorRatio(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_sDU__ErrorRatio.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".sDU_ErrorRatio := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_sDU__ErrorRatio.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if(!single_value->field_residualBitErrorRatio.match(match_value.residualBitErrorRatio(), legacy)){ TTCN_Logger::log_logmatch_info(".residualBitErrorRatio"); single_value->field_residualBitErrorRatio.log_match(match_value.residualBitErrorRatio(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_deliveryOfErroneousSDU.match(match_value.deliveryOfErroneousSDU(), legacy)){ TTCN_Logger::log_logmatch_info(".deliveryOfErroneousSDU"); single_value->field_deliveryOfErroneousSDU.log_match(match_value.deliveryOfErroneousSDU(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.sDU__FormatInformationParameters().ispresent()){ if(!single_value->field_sDU__FormatInformationParameters.match(match_value.sDU__FormatInformationParameters(), legacy)){ TTCN_Logger::log_logmatch_info(".sDU_FormatInformationParameters"); single_value->field_sDU__FormatInformationParameters.log_match(match_value.sDU__FormatInformationParameters(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_sDU__FormatInformationParameters.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".sDU_FormatInformationParameters := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_sDU__FormatInformationParameters.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ sDU_ErrorRatio := "); if (match_value.sDU__ErrorRatio().ispresent()) { single_value->field_sDU__ErrorRatio.log_match(match_value.sDU__ErrorRatio(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_sDU__ErrorRatio.log(); if (single_value->field_sDU__ErrorRatio.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", residualBitErrorRatio := "); single_value->field_residualBitErrorRatio.log_match(match_value.residualBitErrorRatio(), legacy); TTCN_Logger::log_event_str(", deliveryOfErroneousSDU := "); single_value->field_deliveryOfErroneousSDU.log_match(match_value.deliveryOfErroneousSDU(), legacy); TTCN_Logger::log_event_str(", sDU_FormatInformationParameters := "); if (match_value.sDU__FormatInformationParameters().ispresent()) { single_value->field_sDU__FormatInformationParameters.log_match(match_value.sDU__FormatInformationParameters(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_sDU__FormatInformationParameters.log(); if (single_value->field_sDU__FormatInformationParameters.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void SDU__Parameters_0_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (!sDU__ErrorRatio().is_bound()) sDU__ErrorRatio() = OMIT_VALUE; else sDU__ErrorRatio().set_implicit_omit(); if (residualBitErrorRatio().is_bound()) residualBitErrorRatio().set_implicit_omit(); if (deliveryOfErroneousSDU().is_bound()) deliveryOfErroneousSDU().set_implicit_omit(); if (!sDU__FormatInformationParameters().is_bound()) sDU__FormatInformationParameters() = OMIT_VALUE; else sDU__FormatInformationParameters().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__Parameters_0_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_sDU__ErrorRatio.encode_text(text_buf); single_value->field_residualBitErrorRatio.encode_text(text_buf); single_value->field_deliveryOfErroneousSDU.encode_text(text_buf); single_value->field_sDU__FormatInformationParameters.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); } } void SDU__Parameters_0_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_sDU__ErrorRatio.decode_text(text_buf); single_value->field_residualBitErrorRatio.decode_text(text_buf); single_value->field_deliveryOfErroneousSDU.decode_text(text_buf); single_value->field_sDU__FormatInformationParameters.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SDU__Parameters_0_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.SDU-Parameters.SEQUENCE."); } } void SDU__Parameters_0_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SDU__Parameters_0_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sDU__ErrorRatio().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) residualBitErrorRatio().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deliveryOfErroneousSDU().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sDU__FormatInformationParameters().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(4)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_ErrorRatio")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__ErrorRatio().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "residualBitErrorRatio")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { residualBitErrorRatio().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "deliveryOfErroneousSDU")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { deliveryOfErroneousSDU().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_FormatInformationParameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__FormatInformationParameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-Parameters.SEQUENCE: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { SDU__Parameters_0_template* precondition = new SDU__Parameters_0_template; precondition->set_param(*param.get_elem(0)); SDU__Parameters_0_template* implied_template = new SDU__Parameters_0_template; implied_template->set_param(*param.get_elem(1)); *this = SDU__Parameters_0_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.SDU-Parameters.SEQUENCE"); } is_ifpresent = param.get_ifpresent(); } void SDU__Parameters_0_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_sDU__ErrorRatio.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); single_value->field_residualBitErrorRatio.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); single_value->field_deliveryOfErroneousSDU.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); single_value->field_sDU__FormatInformationParameters.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SDU-Parameters.SEQUENCE"); } boolean SDU__Parameters_0_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SDU__Parameters_0_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_iE__Extensions) : field_mantissa(par_mantissa), field_exponent(par_exponent), field_iE__Extensions(par_iE__Extensions) { } SDU__ErrorRatio::SDU__ErrorRatio(const SDU__ErrorRatio& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.SDU-ErrorRatio."); if (other_value.mantissa().is_bound()) field_mantissa = other_value.mantissa(); else field_mantissa.clean_up(); if (other_value.exponent().is_bound()) field_exponent = other_value.exponent(); else field_exponent.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void SDU__ErrorRatio::clean_up() { field_mantissa.clean_up(); field_exponent.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* SDU__ErrorRatio::get_descriptor() const { return &SDU__ErrorRatio_descr_; } SDU__ErrorRatio& SDU__ErrorRatio::operator=(const SDU__ErrorRatio& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.SDU-ErrorRatio."); if (other_value.mantissa().is_bound()) field_mantissa = other_value.mantissa(); else field_mantissa.clean_up(); if (other_value.exponent().is_bound()) field_exponent = other_value.exponent(); else field_exponent.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean SDU__ErrorRatio::operator==(const SDU__ErrorRatio& other_value) const { return field_mantissa==other_value.field_mantissa && field_exponent==other_value.field_exponent && field_iE__Extensions==other_value.field_iE__Extensions; } boolean SDU__ErrorRatio::is_bound() const { return (field_mantissa.is_bound()) || (field_exponent.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean SDU__ErrorRatio::is_value() const { return field_mantissa.is_value() && field_exponent.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int SDU__ErrorRatio::size_of() const { int ret_val = 2; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void SDU__ErrorRatio::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ mantissa := "); field_mantissa.log(); TTCN_Logger::log_event_str(", exponent := "); field_exponent.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void SDU__ErrorRatio::set_implicit_omit() { if (mantissa().is_bound()) mantissa().set_implicit_omit(); if (exponent().is_bound()) exponent().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__ErrorRatio::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mantissa().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) exponent().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "mantissa")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mantissa().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "exponent")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { exponent().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-ErrorRatio: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.SDU-ErrorRatio"); } } void SDU__ErrorRatio::encode_text(Text_Buf& text_buf) const { field_mantissa.encode_text(text_buf); field_exponent.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void SDU__ErrorRatio::decode_text(Text_Buf& text_buf) { field_mantissa.decode_text(text_buf); field_exponent.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void SDU__ErrorRatio::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SDU__ErrorRatio::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SDU__ErrorRatio::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("mantissa': "); new_tlv->add_TLV(field_mantissa.BER_encode_TLV(SDU__ErrorRatio_mantissa_descr_, p_coding)); ec_1.set_msg("exponent': "); new_tlv->add_TLV(field_exponent.BER_encode_TLV(SDU__ErrorRatio_exponent_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(SDU__ErrorRatio_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SDU__ErrorRatio::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.SDU-ErrorRatio' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("mantissa': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_mantissa.BER_decode_TLV(SDU__ErrorRatio_mantissa_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("exponent': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_exponent.BER_decode_TLV(SDU__ErrorRatio_exponent_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(SDU__ErrorRatio_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int SDU__ErrorRatio::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-ErrorRatio."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "mantissa"); enc_len += field_mantissa.JSON_encode(SDU__ErrorRatio_mantissa_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "exponent"); enc_len += field_exponent.JSON_encode(SDU__ErrorRatio_exponent_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(SDU__ErrorRatio_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int SDU__ErrorRatio::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean mantissa_found = FALSE; boolean exponent_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (8 == name_len && 0 == strncmp(fld_name, "mantissa", name_len)) { mantissa_found = TRUE; int ret_val = field_mantissa.JSON_decode(SDU__ErrorRatio_mantissa_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 8, "mantissa"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (8 == name_len && 0 == strncmp(fld_name, "exponent", name_len)) { exponent_found = TRUE; int ret_val = field_exponent.JSON_decode(SDU__ErrorRatio_exponent_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 8, "exponent"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(SDU__ErrorRatio_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!mantissa_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "mantissa"); return JSON_ERROR_FATAL; } if (!exponent_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "exponent"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int SDU__ErrorRatio::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 128; } p_buf.put_c(c); field_mantissa.OER_encode(SDU__ErrorRatio_mantissa_descr_, p_buf); field_exponent.OER_encode(SDU__ErrorRatio_exponent_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(SDU__ErrorRatio_iE__Extensions_descr_, p_buf); return 0; } int SDU__ErrorRatio::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); field_mantissa.OER_decode(SDU__ErrorRatio_mantissa_descr_, p_buf, p_oer); field_exponent.OER_decode(SDU__ErrorRatio_exponent_descr_, p_buf, p_oer); if (uc[0] & 128) field_iE__Extensions.OER_decode(SDU__ErrorRatio_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; return 0; } void SDU__ErrorRatio::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_mantissa.PER_encode(SDU__ErrorRatio_mantissa_descr_, p_buf, p_options); field_exponent.PER_encode(SDU__ErrorRatio_exponent_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(SDU__ErrorRatio_iE__Extensions_descr_, p_buf, p_options); } void SDU__ErrorRatio::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_mantissa.PER_decode(SDU__ErrorRatio_mantissa_descr_, p_buf, p_options); field_exponent.PER_decode(SDU__ErrorRatio_exponent_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(SDU__ErrorRatio_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; } struct SDU__ErrorRatio_template::single_value_struct { INTEGER_template field_mantissa; INTEGER_template field_exponent; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template field_iE__Extensions; }; void SDU__ErrorRatio_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_mantissa = ANY_VALUE; single_value->field_exponent = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void SDU__ErrorRatio_template::copy_value(const SDU__ErrorRatio& other_value) { single_value = new single_value_struct; if (other_value.mantissa().is_bound()) { single_value->field_mantissa = other_value.mantissa(); } else { single_value->field_mantissa.clean_up(); } if (other_value.exponent().is_bound()) { single_value->field_exponent = other_value.exponent(); } else { single_value->field_exponent.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void SDU__ErrorRatio_template::copy_template(const SDU__ErrorRatio_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.mantissa().get_selection()) { single_value->field_mantissa = other_value.mantissa(); } else { single_value->field_mantissa.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.exponent().get_selection()) { single_value->field_exponent = other_value.exponent(); } else { single_value->field_exponent.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SDU__ErrorRatio_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SDU__ErrorRatio_template(*other_value.implication_.precondition); implication_.implied_template = new SDU__ErrorRatio_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.SDU-ErrorRatio."); break; } set_selection(other_value); } SDU__ErrorRatio_template::SDU__ErrorRatio_template() { } SDU__ErrorRatio_template::SDU__ErrorRatio_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SDU__ErrorRatio_template::SDU__ErrorRatio_template(const SDU__ErrorRatio& other_value) { copy_value(other_value); } SDU__ErrorRatio_template::SDU__ErrorRatio_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__ErrorRatio&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.SDU-ErrorRatio from an unbound optional field."); } } SDU__ErrorRatio_template::SDU__ErrorRatio_template(SDU__ErrorRatio_template* p_precondition, SDU__ErrorRatio_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SDU__ErrorRatio_template::SDU__ErrorRatio_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SDU__ErrorRatio_template::SDU__ErrorRatio_template(const SDU__ErrorRatio_template& other_value) : Base_Template() { copy_template(other_value); } SDU__ErrorRatio_template::~SDU__ErrorRatio_template() { clean_up(); } SDU__ErrorRatio_template& SDU__ErrorRatio_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SDU__ErrorRatio_template& SDU__ErrorRatio_template::operator=(const SDU__ErrorRatio& other_value) { clean_up(); copy_value(other_value); return *this; } SDU__ErrorRatio_template& SDU__ErrorRatio_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__ErrorRatio&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.SDU-ErrorRatio."); } return *this; } SDU__ErrorRatio_template& SDU__ErrorRatio_template::operator=(const SDU__ErrorRatio_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SDU__ErrorRatio_template::match(const SDU__ErrorRatio& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.mantissa().is_bound()) return FALSE; if(!single_value->field_mantissa.match(other_value.mantissa(), legacy))return FALSE; if(!other_value.exponent().is_bound()) return FALSE; if(!single_value->field_exponent.match(other_value.exponent(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.SDU-ErrorRatio."); } return FALSE; } boolean SDU__ErrorRatio_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_mantissa.is_bound() || single_value->field_exponent.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean SDU__ErrorRatio_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_mantissa.is_value() && single_value->field_exponent.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void SDU__ErrorRatio_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SDU__ErrorRatio SDU__ErrorRatio_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.SDU-ErrorRatio."); SDU__ErrorRatio ret_val; if (single_value->field_mantissa.is_bound()) { ret_val.mantissa() = single_value->field_mantissa.valueof(); } if (single_value->field_exponent.is_bound()) { ret_val.exponent() = single_value->field_exponent.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void SDU__ErrorRatio_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.SDU-ErrorRatio."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SDU__ErrorRatio_template[list_length]; } SDU__ErrorRatio_template& SDU__ErrorRatio_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.SDU-ErrorRatio."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.SDU-ErrorRatio."); return value_list.list_value[list_index]; } INTEGER_template& SDU__ErrorRatio_template::mantissa() { set_specific(); return single_value->field_mantissa; } const INTEGER_template& SDU__ErrorRatio_template::mantissa() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field mantissa of a non-specific template of type @RANAP-IEs.SDU-ErrorRatio."); return single_value->field_mantissa; } INTEGER_template& SDU__ErrorRatio_template::exponent() { set_specific(); return single_value->field_exponent; } const INTEGER_template& SDU__ErrorRatio_template::exponent() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field exponent of a non-specific template of type @RANAP-IEs.SDU-ErrorRatio."); return single_value->field_exponent; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& SDU__ErrorRatio_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& SDU__ErrorRatio_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.SDU-ErrorRatio."); return single_value->field_iE__Extensions; } int SDU__ErrorRatio_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-ErrorRatio containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.SDU-ErrorRatio."); } return 0; } void SDU__ErrorRatio_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ mantissa := "); single_value->field_mantissa.log(); TTCN_Logger::log_event_str(", exponent := "); single_value->field_exponent.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void SDU__ErrorRatio_template::log_match(const SDU__ErrorRatio& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_mantissa.match(match_value.mantissa(), legacy)){ TTCN_Logger::log_logmatch_info(".mantissa"); single_value->field_mantissa.log_match(match_value.mantissa(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_exponent.match(match_value.exponent(), legacy)){ TTCN_Logger::log_logmatch_info(".exponent"); single_value->field_exponent.log_match(match_value.exponent(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ mantissa := "); single_value->field_mantissa.log_match(match_value.mantissa(), legacy); TTCN_Logger::log_event_str(", exponent := "); single_value->field_exponent.log_match(match_value.exponent(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void SDU__ErrorRatio_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (mantissa().is_bound()) mantissa().set_implicit_omit(); if (exponent().is_bound()) exponent().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__ErrorRatio_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_mantissa.encode_text(text_buf); single_value->field_exponent.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.SDU-ErrorRatio."); } } void SDU__ErrorRatio_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_mantissa.decode_text(text_buf); single_value->field_exponent.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SDU__ErrorRatio_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.SDU-ErrorRatio."); } } void SDU__ErrorRatio_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SDU__ErrorRatio_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) mantissa().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) exponent().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "mantissa")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { mantissa().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "exponent")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { exponent().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-ErrorRatio: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { SDU__ErrorRatio_template* precondition = new SDU__ErrorRatio_template; precondition->set_param(*param.get_elem(0)); SDU__ErrorRatio_template* implied_template = new SDU__ErrorRatio_template; implied_template->set_param(*param.get_elem(1)); *this = SDU__ErrorRatio_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.SDU-ErrorRatio"); } is_ifpresent = param.get_ifpresent(); } void SDU__ErrorRatio_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_mantissa.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-ErrorRatio"); single_value->field_exponent.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-ErrorRatio"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-ErrorRatio"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SDU-ErrorRatio"); } boolean SDU__ErrorRatio_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SDU__ErrorRatio_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst5"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst5_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst4"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst4_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } SDU__FormatInformationParameters::SDU__FormatInformationParameters(const SDU__FormatInformationParameters& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } SDU__FormatInformationParameters::~SDU__FormatInformationParameters() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void SDU__FormatInformationParameters::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } SDU__FormatInformationParameters& SDU__FormatInformationParameters::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } SDU__FormatInformationParameters& SDU__FormatInformationParameters::operator=(const SDU__FormatInformationParameters& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean SDU__FormatInformationParameters::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); return val_ptr->n_elements == 0 ; } boolean SDU__FormatInformationParameters::operator==(const SDU__FormatInformationParameters& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } SDU__FormatInformationParameters_0& SDU__FormatInformationParameters::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.SDU-FormatInformationParameters using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (SDU__FormatInformationParameters_0**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SDU__FormatInformationParameters_0(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new SDU__FormatInformationParameters_0; } return *val_ptr->value_elements[index_value]; } SDU__FormatInformationParameters_0& SDU__FormatInformationParameters::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.SDU-FormatInformationParameters."); return (*this)[(int)index_value]; } const SDU__FormatInformationParameters_0& SDU__FormatInformationParameters::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.SDU-FormatInformationParameters using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.SDU-FormatInformationParameters: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const SDU__FormatInformationParameters_0& SDU__FormatInformationParameters::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.SDU-FormatInformationParameters."); return (*this)[(int)index_value]; } SDU__FormatInformationParameters SDU__FormatInformationParameters::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } SDU__FormatInformationParameters SDU__FormatInformationParameters::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } SDU__FormatInformationParameters SDU__FormatInformationParameters::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } SDU__FormatInformationParameters SDU__FormatInformationParameters::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; SDU__FormatInformationParameters ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new SDU__FormatInformationParameters_0(*val_ptr->value_elements[i]); } } return ret_val; } SDU__FormatInformationParameters SDU__FormatInformationParameters::operator+(const SDU__FormatInformationParameters& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.SDU-FormatInformationParameters concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; SDU__FormatInformationParameters ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__FormatInformationParameters_0(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new SDU__FormatInformationParameters_0(*other_value.val_ptr->value_elements[i]); } } return ret_val; } SDU__FormatInformationParameters SDU__FormatInformationParameters::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.SDU-FormatInformationParameters","element"); SDU__FormatInformationParameters ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__FormatInformationParameters_0(*val_ptr->value_elements[i+index]); } } return ret_val; } SDU__FormatInformationParameters SDU__FormatInformationParameters::replace(int index, int len, const SDU__FormatInformationParameters& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.SDU-FormatInformationParameters","element"); SDU__FormatInformationParameters ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SDU__FormatInformationParameters_0(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new SDU__FormatInformationParameters_0(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new SDU__FormatInformationParameters_0(*val_ptr->value_elements[index+i+len]); } } return ret_val; } SDU__FormatInformationParameters SDU__FormatInformationParameters::replace(int index, int len, const SDU__FormatInformationParameters_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void SDU__FormatInformationParameters::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.SDU-FormatInformationParameters."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (SDU__FormatInformationParameters_0**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SDU__FormatInformationParameters_0(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (SDU__FormatInformationParameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.SDU-FormatInformationParameters: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (SDU__FormatInformationParameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean SDU__FormatInformationParameters::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int SDU__FormatInformationParameters::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); return val_ptr->n_elements; } int SDU__FormatInformationParameters::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void SDU__FormatInformationParameters::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void SDU__FormatInformationParameters::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void SDU__FormatInformationParameters::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.SDU-FormatInformationParameters"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.SDU-FormatInformationParameters"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void SDU__FormatInformationParameters::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void SDU__FormatInformationParameters::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.SDU-FormatInformationParameters."); val_ptr->value_elements = (SDU__FormatInformationParameters_0**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new SDU__FormatInformationParameters_0; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void SDU__FormatInformationParameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SDU__FormatInformationParameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SDU__FormatInformationParameters::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SDU__FormatInformationParameters::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (SDU__FormatInformationParameters_0**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new SDU__FormatInformationParameters_0; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int SDU__FormatInformationParameters::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int SDU__FormatInformationParameters::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } SDU__FormatInformationParameters_0* val = new SDU__FormatInformationParameters_0; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (SDU__FormatInformationParameters_0**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int SDU__FormatInformationParameters::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int SDU__FormatInformationParameters::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void SDU__FormatInformationParameters::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void SDU__FormatInformationParameters::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void SDU__FormatInformationParameters_template::copy_value(const SDU__FormatInformationParameters& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.SDU-FormatInformationParameters with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (SDU__FormatInformationParameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template; } } set_selection(SPECIFIC_VALUE); } void SDU__FormatInformationParameters_template::copy_template(const SDU__FormatInformationParameters_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (SDU__FormatInformationParameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SDU__FormatInformationParameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SDU__FormatInformationParameters_template(*other_value.implication_.precondition); implication_.implied_template = new SDU__FormatInformationParameters_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters."); break; } set_selection(other_value); } boolean SDU__FormatInformationParameters_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const SDU__FormatInformationParameters_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const SDU__FormatInformationParameters*)value_ptr)[value_index], legacy); else return ((const SDU__FormatInformationParameters_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template() { } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(const SDU__FormatInformationParameters& other_value) { copy_value(other_value); } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__FormatInformationParameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.SDU-FormatInformationParameters from an unbound optional field."); } } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(SDU__FormatInformationParameters_template* p_precondition, SDU__FormatInformationParameters_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SDU__FormatInformationParameters_template::SDU__FormatInformationParameters_template(const SDU__FormatInformationParameters_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } SDU__FormatInformationParameters_template::~SDU__FormatInformationParameters_template() { clean_up(); } void SDU__FormatInformationParameters_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::operator=(const SDU__FormatInformationParameters& other_value) { clean_up(); copy_value(other_value); return *this; } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__FormatInformationParameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.SDU-FormatInformationParameters."); } return *this; } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::operator=(const SDU__FormatInformationParameters_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.SDU-FormatInformationParameters using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.SDU-FormatInformationParameters."); break; } return *single_value.value_elements[index_value]; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.SDU-FormatInformationParameters."); return (*this)[(int)index_value]; } const SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.SDU-FormatInformationParameters using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.SDU-FormatInformationParameters."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.SDU-FormatInformationParameters: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.SDU-FormatInformationParameters."); return (*this)[(int)index_value]; } void SDU__FormatInformationParameters_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.SDU-FormatInformationParameters."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (SDU__FormatInformationParameters_0_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (SDU__FormatInformationParameters_0_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int SDU__FormatInformationParameters_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int SDU__FormatInformationParameters_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.SDU-FormatInformationParameters"); } boolean SDU__FormatInformationParameters_template::match(const SDU__FormatInformationParameters& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters."); } return FALSE; } boolean SDU__FormatInformationParameters_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } SDU__FormatInformationParameters SDU__FormatInformationParameters_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.SDU-FormatInformationParameters."); SDU__FormatInformationParameters ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } SDU__FormatInformationParameters SDU__FormatInformationParameters_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } SDU__FormatInformationParameters SDU__FormatInformationParameters_template::replace(int index, int len, const SDU__FormatInformationParameters_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } SDU__FormatInformationParameters SDU__FormatInformationParameters_template::replace(int index, int len, const SDU__FormatInformationParameters& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void SDU__FormatInformationParameters_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new SDU__FormatInformationParameters_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.SDU-FormatInformationParameters."); } set_selection(template_type); } SDU__FormatInformationParameters_template& SDU__FormatInformationParameters_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.SDU-FormatInformationParameters."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.SDU-FormatInformationParameters."); return value_list.list_value[list_index]; } void SDU__FormatInformationParameters_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void SDU__FormatInformationParameters_template::log_match(const SDU__FormatInformationParameters& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void SDU__FormatInformationParameters_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters."); } } void SDU__FormatInformationParameters_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.SDU-FormatInformationParameters."); single_value.value_elements = (SDU__FormatInformationParameters_0_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new SDU__FormatInformationParameters_0_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SDU__FormatInformationParameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.SDU-FormatInformationParameters."); } } boolean SDU__FormatInformationParameters_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SDU__FormatInformationParameters_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void SDU__FormatInformationParameters_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SDU__FormatInformationParameters_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { SDU__FormatInformationParameters_template* precondition = new SDU__FormatInformationParameters_template; precondition->set_param(*param.get_elem(0)); SDU__FormatInformationParameters_template* implied_template = new SDU__FormatInformationParameters_template; implied_template->set_param(*param.get_elem(1)); *this = SDU__FormatInformationParameters_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.SDU-FormatInformationParameters"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void SDU__FormatInformationParameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters"); } boolean SDU__FormatInformationParameters_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } SDU__FormatInformationParameters_0::SDU__FormatInformationParameters_0() { } SDU__FormatInformationParameters_0::SDU__FormatInformationParameters_0(const OPTIONAL< INTEGER >& par_subflowSDU__Size, const OPTIONAL< INTEGER >& par_rAB__SubflowCombinationBitRate, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 >& par_iE__Extensions) : field_subflowSDU__Size(par_subflowSDU__Size), field_rAB__SubflowCombinationBitRate(par_rAB__SubflowCombinationBitRate), field_iE__Extensions(par_iE__Extensions) { } SDU__FormatInformationParameters_0::SDU__FormatInformationParameters_0(const SDU__FormatInformationParameters_0& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); if (other_value.subflowSDU__Size().is_bound()) field_subflowSDU__Size = other_value.subflowSDU__Size(); else field_subflowSDU__Size.clean_up(); if (other_value.rAB__SubflowCombinationBitRate().is_bound()) field_rAB__SubflowCombinationBitRate = other_value.rAB__SubflowCombinationBitRate(); else field_rAB__SubflowCombinationBitRate.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void SDU__FormatInformationParameters_0::clean_up() { field_subflowSDU__Size.clean_up(); field_rAB__SubflowCombinationBitRate.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* SDU__FormatInformationParameters_0::get_descriptor() const { return &SDU__FormatInformationParameters_0_descr_; } SDU__FormatInformationParameters_0& SDU__FormatInformationParameters_0::operator=(const SDU__FormatInformationParameters_0& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); if (other_value.subflowSDU__Size().is_bound()) field_subflowSDU__Size = other_value.subflowSDU__Size(); else field_subflowSDU__Size.clean_up(); if (other_value.rAB__SubflowCombinationBitRate().is_bound()) field_rAB__SubflowCombinationBitRate = other_value.rAB__SubflowCombinationBitRate(); else field_rAB__SubflowCombinationBitRate.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean SDU__FormatInformationParameters_0::operator==(const SDU__FormatInformationParameters_0& other_value) const { return field_subflowSDU__Size==other_value.field_subflowSDU__Size && field_rAB__SubflowCombinationBitRate==other_value.field_rAB__SubflowCombinationBitRate && field_iE__Extensions==other_value.field_iE__Extensions; } boolean SDU__FormatInformationParameters_0::is_bound() const { return (OPTIONAL_OMIT == field_subflowSDU__Size.get_selection() || field_subflowSDU__Size.is_bound()) || (OPTIONAL_OMIT == field_rAB__SubflowCombinationBitRate.get_selection() || field_rAB__SubflowCombinationBitRate.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean SDU__FormatInformationParameters_0::is_value() const { return (OPTIONAL_OMIT == field_subflowSDU__Size.get_selection() || field_subflowSDU__Size.is_value()) && (OPTIONAL_OMIT == field_rAB__SubflowCombinationBitRate.get_selection() || field_rAB__SubflowCombinationBitRate.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int SDU__FormatInformationParameters_0::size_of() const { int ret_val = 0; if (field_subflowSDU__Size.ispresent()) ret_val++; if (field_rAB__SubflowCombinationBitRate.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void SDU__FormatInformationParameters_0::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ subflowSDU_Size := "); field_subflowSDU__Size.log(); TTCN_Logger::log_event_str(", rAB_SubflowCombinationBitRate := "); field_rAB__SubflowCombinationBitRate.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void SDU__FormatInformationParameters_0::set_implicit_omit() { if (!subflowSDU__Size().is_bound()) subflowSDU__Size() = OMIT_VALUE; else subflowSDU__Size().set_implicit_omit(); if (!rAB__SubflowCombinationBitRate().is_bound()) rAB__SubflowCombinationBitRate() = OMIT_VALUE; else rAB__SubflowCombinationBitRate().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__FormatInformationParameters_0::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) subflowSDU__Size().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAB__SubflowCombinationBitRate().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "subflowSDU_Size")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { subflowSDU__Size().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAB_SubflowCombinationBitRate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAB__SubflowCombinationBitRate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); } } void SDU__FormatInformationParameters_0::encode_text(Text_Buf& text_buf) const { field_subflowSDU__Size.encode_text(text_buf); field_rAB__SubflowCombinationBitRate.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void SDU__FormatInformationParameters_0::decode_text(Text_Buf& text_buf) { field_subflowSDU__Size.decode_text(text_buf); field_rAB__SubflowCombinationBitRate.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void SDU__FormatInformationParameters_0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SDU__FormatInformationParameters_0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SDU__FormatInformationParameters_0::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("subflowSDU_Size': "); new_tlv->add_TLV(field_subflowSDU__Size.BER_encode_TLV(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_coding)); ec_1.set_msg("rAB_SubflowCombinationBitRate': "); new_tlv->add_TLV(field_rAB__SubflowCombinationBitRate.BER_encode_TLV(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SDU__FormatInformationParameters_0::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("subflowSDU_Size': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_subflowSDU__Size=OMIT_VALUE; else { field_subflowSDU__Size.BER_decode_TLV(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, tmp_tlv, L_form); if(field_subflowSDU__Size.ispresent()) tlv_present=FALSE; } ec_2.set_msg("rAB_SubflowCombinationBitRate': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_rAB__SubflowCombinationBitRate=OMIT_VALUE; else { field_rAB__SubflowCombinationBitRate.BER_decode_TLV(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, tmp_tlv, L_form); if(field_rAB__SubflowCombinationBitRate.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(SDU__FormatInformationParameters_0_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int SDU__FormatInformationParameters_0::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); if (field_subflowSDU__Size.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "subflowSDU_Size"); enc_len += field_subflowSDU__Size.JSON_encode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_tok, FALSE); } if (field_rAB__SubflowCombinationBitRate.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAB_SubflowCombinationBitRate"); enc_len += field_rAB__SubflowCombinationBitRate.JSON_encode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int SDU__FormatInformationParameters_0::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean subflowSDU__Size_found = FALSE; boolean rAB__SubflowCombinationBitRate_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (15 == name_len && 0 == strncmp(fld_name, "subflowSDU_Size", name_len)) { subflowSDU__Size_found = TRUE; int ret_val = field_subflowSDU__Size.JSON_decode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 15, "subflowSDU_Size"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (29 == name_len && 0 == strncmp(fld_name, "rAB_SubflowCombinationBitRate", name_len)) { rAB__SubflowCombinationBitRate_found = TRUE; int ret_val = field_rAB__SubflowCombinationBitRate.JSON_decode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 29, "rAB_SubflowCombinationBitRate"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!subflowSDU__Size_found) { field_subflowSDU__Size = OMIT_VALUE; } if (!rAB__SubflowCombinationBitRate_found) { field_rAB__SubflowCombinationBitRate = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int SDU__FormatInformationParameters_0::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_subflowSDU__Size.is_present()) { c |= 64; } if (field_rAB__SubflowCombinationBitRate.is_present()) { c |= 32; } if (field_iE__Extensions.is_present()) { c |= 16; } p_buf.put_c(c); if (field_subflowSDU__Size.is_present()) field_subflowSDU__Size.OER_encode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_buf); if (field_rAB__SubflowCombinationBitRate.is_present()) field_rAB__SubflowCombinationBitRate.OER_encode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_buf); return 0; } int SDU__FormatInformationParameters_0::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } if (uc[0] & 64) field_subflowSDU__Size.OER_decode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_buf, p_oer); else field_subflowSDU__Size = OMIT_VALUE; if (uc[0] & 32) field_rAB__SubflowCombinationBitRate.OER_decode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_buf, p_oer); else field_rAB__SubflowCombinationBitRate = OMIT_VALUE; if (uc[0] & 16) field_iE__Extensions.OER_decode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void SDU__FormatInformationParameters_0::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_subflowSDU__Size_present = field_subflowSDU__Size.is_present(); p_buf.PER_put_bit(field_subflowSDU__Size_present); boolean field_rAB__SubflowCombinationBitRate_present = field_rAB__SubflowCombinationBitRate.is_present(); p_buf.PER_put_bit(field_rAB__SubflowCombinationBitRate_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); if (field_subflowSDU__Size_present) field_subflowSDU__Size.PER_encode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_buf, p_options); if (field_rAB__SubflowCombinationBitRate_present) field_rAB__SubflowCombinationBitRate.PER_encode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_buf, p_options); } void SDU__FormatInformationParameters_0::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_subflowSDU__Size_present = p_buf.PER_get_bit(); boolean field_rAB__SubflowCombinationBitRate_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); if (field_subflowSDU__Size_present) field_subflowSDU__Size.PER_decode(SDU__FormatInformationParameters_0_subflowSDU__Size_descr_, p_buf, p_options); else field_subflowSDU__Size = OMIT_VALUE; if (field_rAB__SubflowCombinationBitRate_present) field_rAB__SubflowCombinationBitRate.PER_decode(SDU__FormatInformationParameters_0_rAB__SubflowCombinationBitRate_descr_, p_buf, p_options); else field_rAB__SubflowCombinationBitRate = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(SDU__FormatInformationParameters_0_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct SDU__FormatInformationParameters_0_template::single_value_struct { INTEGER_template field_subflowSDU__Size; INTEGER_template field_rAB__SubflowCombinationBitRate; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template field_iE__Extensions; }; void SDU__FormatInformationParameters_0_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_subflowSDU__Size = ANY_OR_OMIT; single_value->field_rAB__SubflowCombinationBitRate = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void SDU__FormatInformationParameters_0_template::copy_value(const SDU__FormatInformationParameters_0& other_value) { single_value = new single_value_struct; if (other_value.subflowSDU__Size().is_bound()) { if (other_value.subflowSDU__Size().ispresent()) single_value->field_subflowSDU__Size = other_value.subflowSDU__Size()(); else single_value->field_subflowSDU__Size = OMIT_VALUE; } else { single_value->field_subflowSDU__Size.clean_up(); } if (other_value.rAB__SubflowCombinationBitRate().is_bound()) { if (other_value.rAB__SubflowCombinationBitRate().ispresent()) single_value->field_rAB__SubflowCombinationBitRate = other_value.rAB__SubflowCombinationBitRate()(); else single_value->field_rAB__SubflowCombinationBitRate = OMIT_VALUE; } else { single_value->field_rAB__SubflowCombinationBitRate.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void SDU__FormatInformationParameters_0_template::copy_template(const SDU__FormatInformationParameters_0_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.subflowSDU__Size().get_selection()) { single_value->field_subflowSDU__Size = other_value.subflowSDU__Size(); } else { single_value->field_subflowSDU__Size.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.rAB__SubflowCombinationBitRate().get_selection()) { single_value->field_rAB__SubflowCombinationBitRate = other_value.rAB__SubflowCombinationBitRate(); } else { single_value->field_rAB__SubflowCombinationBitRate.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SDU__FormatInformationParameters_0_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SDU__FormatInformationParameters_0_template(*other_value.implication_.precondition); implication_.implied_template = new SDU__FormatInformationParameters_0_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); break; } set_selection(other_value); } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template() { } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(const SDU__FormatInformationParameters_0& other_value) { copy_value(other_value); } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__FormatInformationParameters_0&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE from an unbound optional field."); } } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(SDU__FormatInformationParameters_0_template* p_precondition, SDU__FormatInformationParameters_0_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SDU__FormatInformationParameters_0_template::SDU__FormatInformationParameters_0_template(const SDU__FormatInformationParameters_0_template& other_value) : Base_Template() { copy_template(other_value); } SDU__FormatInformationParameters_0_template::~SDU__FormatInformationParameters_0_template() { clean_up(); } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_0_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_0_template::operator=(const SDU__FormatInformationParameters_0& other_value) { clean_up(); copy_value(other_value); return *this; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_0_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const SDU__FormatInformationParameters_0&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); } return *this; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_0_template::operator=(const SDU__FormatInformationParameters_0_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SDU__FormatInformationParameters_0_template::match(const SDU__FormatInformationParameters_0& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.subflowSDU__Size().is_bound()) return FALSE; if((other_value.subflowSDU__Size().ispresent() ? !single_value->field_subflowSDU__Size.match((const INTEGER&)other_value.subflowSDU__Size(), legacy) : !single_value->field_subflowSDU__Size.match_omit(legacy)))return FALSE; if(!other_value.rAB__SubflowCombinationBitRate().is_bound()) return FALSE; if((other_value.rAB__SubflowCombinationBitRate().ispresent() ? !single_value->field_rAB__SubflowCombinationBitRate.match((const INTEGER&)other_value.rAB__SubflowCombinationBitRate(), legacy) : !single_value->field_rAB__SubflowCombinationBitRate.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); } return FALSE; } boolean SDU__FormatInformationParameters_0_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return (single_value->field_subflowSDU__Size.is_omit() || single_value->field_subflowSDU__Size.is_bound()) || (single_value->field_rAB__SubflowCombinationBitRate.is_omit() || single_value->field_rAB__SubflowCombinationBitRate.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean SDU__FormatInformationParameters_0_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return (single_value->field_subflowSDU__Size.is_omit() || single_value->field_subflowSDU__Size.is_value()) && (single_value->field_rAB__SubflowCombinationBitRate.is_omit() || single_value->field_rAB__SubflowCombinationBitRate.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void SDU__FormatInformationParameters_0_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SDU__FormatInformationParameters_0 SDU__FormatInformationParameters_0_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); SDU__FormatInformationParameters_0 ret_val; if (single_value->field_subflowSDU__Size.is_omit()) ret_val.subflowSDU__Size() = OMIT_VALUE; else if (single_value->field_subflowSDU__Size.is_bound()) { ret_val.subflowSDU__Size() = single_value->field_subflowSDU__Size.valueof(); } if (single_value->field_rAB__SubflowCombinationBitRate.is_omit()) ret_val.rAB__SubflowCombinationBitRate() = OMIT_VALUE; else if (single_value->field_rAB__SubflowCombinationBitRate.is_bound()) { ret_val.rAB__SubflowCombinationBitRate() = single_value->field_rAB__SubflowCombinationBitRate.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void SDU__FormatInformationParameters_0_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SDU__FormatInformationParameters_0_template[list_length]; } SDU__FormatInformationParameters_0_template& SDU__FormatInformationParameters_0_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); return value_list.list_value[list_index]; } INTEGER_template& SDU__FormatInformationParameters_0_template::subflowSDU__Size() { set_specific(); return single_value->field_subflowSDU__Size; } const INTEGER_template& SDU__FormatInformationParameters_0_template::subflowSDU__Size() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field subflowSDU_Size of a non-specific template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); return single_value->field_subflowSDU__Size; } INTEGER_template& SDU__FormatInformationParameters_0_template::rAB__SubflowCombinationBitRate() { set_specific(); return single_value->field_rAB__SubflowCombinationBitRate; } const INTEGER_template& SDU__FormatInformationParameters_0_template::rAB__SubflowCombinationBitRate() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAB_SubflowCombinationBitRate of a non-specific template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); return single_value->field_rAB__SubflowCombinationBitRate; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& SDU__FormatInformationParameters_0_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& SDU__FormatInformationParameters_0_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); return single_value->field_iE__Extensions; } int SDU__FormatInformationParameters_0_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 0; if (single_value->field_subflowSDU__Size.is_present()) ret_val++; if (single_value->field_rAB__SubflowCombinationBitRate.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); } return 0; } void SDU__FormatInformationParameters_0_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ subflowSDU_Size := "); single_value->field_subflowSDU__Size.log(); TTCN_Logger::log_event_str(", rAB_SubflowCombinationBitRate := "); single_value->field_rAB__SubflowCombinationBitRate.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void SDU__FormatInformationParameters_0_template::log_match(const SDU__FormatInformationParameters_0& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if (match_value.subflowSDU__Size().ispresent()){ if(!single_value->field_subflowSDU__Size.match(match_value.subflowSDU__Size(), legacy)){ TTCN_Logger::log_logmatch_info(".subflowSDU_Size"); single_value->field_subflowSDU__Size.log_match(match_value.subflowSDU__Size(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_subflowSDU__Size.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".subflowSDU_Size := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_subflowSDU__Size.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.rAB__SubflowCombinationBitRate().ispresent()){ if(!single_value->field_rAB__SubflowCombinationBitRate.match(match_value.rAB__SubflowCombinationBitRate(), legacy)){ TTCN_Logger::log_logmatch_info(".rAB_SubflowCombinationBitRate"); single_value->field_rAB__SubflowCombinationBitRate.log_match(match_value.rAB__SubflowCombinationBitRate(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_rAB__SubflowCombinationBitRate.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".rAB_SubflowCombinationBitRate := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_rAB__SubflowCombinationBitRate.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ subflowSDU_Size := "); if (match_value.subflowSDU__Size().ispresent()) { single_value->field_subflowSDU__Size.log_match(match_value.subflowSDU__Size(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_subflowSDU__Size.log(); if (single_value->field_subflowSDU__Size.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", rAB_SubflowCombinationBitRate := "); if (match_value.rAB__SubflowCombinationBitRate().ispresent()) { single_value->field_rAB__SubflowCombinationBitRate.log_match(match_value.rAB__SubflowCombinationBitRate(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_rAB__SubflowCombinationBitRate.log(); if (single_value->field_rAB__SubflowCombinationBitRate.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void SDU__FormatInformationParameters_0_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (!subflowSDU__Size().is_bound()) subflowSDU__Size() = OMIT_VALUE; else subflowSDU__Size().set_implicit_omit(); if (!rAB__SubflowCombinationBitRate().is_bound()) rAB__SubflowCombinationBitRate() = OMIT_VALUE; else rAB__SubflowCombinationBitRate().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void SDU__FormatInformationParameters_0_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_subflowSDU__Size.encode_text(text_buf); single_value->field_rAB__SubflowCombinationBitRate.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); } } void SDU__FormatInformationParameters_0_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_subflowSDU__Size.decode_text(text_buf); single_value->field_rAB__SubflowCombinationBitRate.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SDU__FormatInformationParameters_0_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE."); } } void SDU__FormatInformationParameters_0_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SDU__FormatInformationParameters_0_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) subflowSDU__Size().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAB__SubflowCombinationBitRate().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "subflowSDU_Size")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { subflowSDU__Size().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAB_SubflowCombinationBitRate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAB__SubflowCombinationBitRate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { SDU__FormatInformationParameters_0_template* precondition = new SDU__FormatInformationParameters_0_template; precondition->set_param(*param.get_elem(0)); SDU__FormatInformationParameters_0_template* implied_template = new SDU__FormatInformationParameters_0_template; implied_template->set_param(*param.get_elem(1)); *this = SDU__FormatInformationParameters_0_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); } is_ifpresent = param.get_ifpresent(); } void SDU__FormatInformationParameters_0_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_subflowSDU__Size.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); single_value->field_rAB__SubflowCombinationBitRate.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SDU-FormatInformationParameters.SEQUENCE"); } boolean SDU__FormatInformationParameters_0_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SDU__FormatInformationParameters_0_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst7"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst7_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst6"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst6_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst8"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst8_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst7"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst7_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_guaranteedBitRate, const DeliveryOrder& par_deliveryOrder, const INTEGER& par_maxSDU__Size, const SDU__Parameters& par_sDU__Parameters, const OPTIONAL< INTEGER >& par_transferDelay, const OPTIONAL< INTEGER >& par_trafficHandlingPriority, const OPTIONAL< AllocationOrRetentionPriority >& par_allocationOrRetentionPriority, const OPTIONAL< SourceStatisticsDescriptor >& par_sourceStatisticsDescriptor, const OPTIONAL< RelocationRequirement >& par_relocationRequirement, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 >& par_iE__Extensions) : field_trafficClass(par_trafficClass), field_rAB__AsymmetryIndicator(par_rAB__AsymmetryIndicator), field_maxBitrate(par_maxBitrate), field_guaranteedBitRate(par_guaranteedBitRate), field_deliveryOrder(par_deliveryOrder), field_maxSDU__Size(par_maxSDU__Size), field_sDU__Parameters(par_sDU__Parameters), field_transferDelay(par_transferDelay), field_trafficHandlingPriority(par_trafficHandlingPriority), field_allocationOrRetentionPriority(par_allocationOrRetentionPriority), field_sourceStatisticsDescriptor(par_sourceStatisticsDescriptor), field_relocationRequirement(par_relocationRequirement), field_iE__Extensions(par_iE__Extensions) { } RAB__Parameters::RAB__Parameters(const RAB__Parameters& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.RAB-Parameters."); if (other_value.trafficClass().is_bound()) field_trafficClass = other_value.trafficClass(); else field_trafficClass.clean_up(); if (other_value.rAB__AsymmetryIndicator().is_bound()) field_rAB__AsymmetryIndicator = other_value.rAB__AsymmetryIndicator(); else field_rAB__AsymmetryIndicator.clean_up(); if (other_value.maxBitrate().is_bound()) field_maxBitrate = other_value.maxBitrate(); else field_maxBitrate.clean_up(); if (other_value.guaranteedBitRate().is_bound()) field_guaranteedBitRate = other_value.guaranteedBitRate(); else field_guaranteedBitRate.clean_up(); if (other_value.deliveryOrder().is_bound()) field_deliveryOrder = other_value.deliveryOrder(); else field_deliveryOrder.clean_up(); if (other_value.maxSDU__Size().is_bound()) field_maxSDU__Size = other_value.maxSDU__Size(); else field_maxSDU__Size.clean_up(); if (other_value.sDU__Parameters().is_bound()) field_sDU__Parameters = other_value.sDU__Parameters(); else field_sDU__Parameters.clean_up(); if (other_value.transferDelay().is_bound()) field_transferDelay = other_value.transferDelay(); else field_transferDelay.clean_up(); if (other_value.trafficHandlingPriority().is_bound()) field_trafficHandlingPriority = other_value.trafficHandlingPriority(); else field_trafficHandlingPriority.clean_up(); if (other_value.allocationOrRetentionPriority().is_bound()) field_allocationOrRetentionPriority = other_value.allocationOrRetentionPriority(); else field_allocationOrRetentionPriority.clean_up(); if (other_value.sourceStatisticsDescriptor().is_bound()) field_sourceStatisticsDescriptor = other_value.sourceStatisticsDescriptor(); else field_sourceStatisticsDescriptor.clean_up(); if (other_value.relocationRequirement().is_bound()) field_relocationRequirement = other_value.relocationRequirement(); else field_relocationRequirement.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void RAB__Parameters::clean_up() { field_trafficClass.clean_up(); field_rAB__AsymmetryIndicator.clean_up(); field_maxBitrate.clean_up(); field_guaranteedBitRate.clean_up(); field_deliveryOrder.clean_up(); field_maxSDU__Size.clean_up(); field_sDU__Parameters.clean_up(); field_transferDelay.clean_up(); field_trafficHandlingPriority.clean_up(); field_allocationOrRetentionPriority.clean_up(); field_sourceStatisticsDescriptor.clean_up(); field_relocationRequirement.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* RAB__Parameters::get_descriptor() const { return &RAB__Parameters_descr_; } RAB__Parameters& RAB__Parameters::operator=(const RAB__Parameters& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.RAB-Parameters."); if (other_value.trafficClass().is_bound()) field_trafficClass = other_value.trafficClass(); else field_trafficClass.clean_up(); if (other_value.rAB__AsymmetryIndicator().is_bound()) field_rAB__AsymmetryIndicator = other_value.rAB__AsymmetryIndicator(); else field_rAB__AsymmetryIndicator.clean_up(); if (other_value.maxBitrate().is_bound()) field_maxBitrate = other_value.maxBitrate(); else field_maxBitrate.clean_up(); if (other_value.guaranteedBitRate().is_bound()) field_guaranteedBitRate = other_value.guaranteedBitRate(); else field_guaranteedBitRate.clean_up(); if (other_value.deliveryOrder().is_bound()) field_deliveryOrder = other_value.deliveryOrder(); else field_deliveryOrder.clean_up(); if (other_value.maxSDU__Size().is_bound()) field_maxSDU__Size = other_value.maxSDU__Size(); else field_maxSDU__Size.clean_up(); if (other_value.sDU__Parameters().is_bound()) field_sDU__Parameters = other_value.sDU__Parameters(); else field_sDU__Parameters.clean_up(); if (other_value.transferDelay().is_bound()) field_transferDelay = other_value.transferDelay(); else field_transferDelay.clean_up(); if (other_value.trafficHandlingPriority().is_bound()) field_trafficHandlingPriority = other_value.trafficHandlingPriority(); else field_trafficHandlingPriority.clean_up(); if (other_value.allocationOrRetentionPriority().is_bound()) field_allocationOrRetentionPriority = other_value.allocationOrRetentionPriority(); else field_allocationOrRetentionPriority.clean_up(); if (other_value.sourceStatisticsDescriptor().is_bound()) field_sourceStatisticsDescriptor = other_value.sourceStatisticsDescriptor(); else field_sourceStatisticsDescriptor.clean_up(); if (other_value.relocationRequirement().is_bound()) field_relocationRequirement = other_value.relocationRequirement(); else field_relocationRequirement.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean RAB__Parameters::operator==(const RAB__Parameters& other_value) const { return field_trafficClass==other_value.field_trafficClass && field_rAB__AsymmetryIndicator==other_value.field_rAB__AsymmetryIndicator && field_maxBitrate==other_value.field_maxBitrate && field_guaranteedBitRate==other_value.field_guaranteedBitRate && field_deliveryOrder==other_value.field_deliveryOrder && field_maxSDU__Size==other_value.field_maxSDU__Size && field_sDU__Parameters==other_value.field_sDU__Parameters && field_transferDelay==other_value.field_transferDelay && field_trafficHandlingPriority==other_value.field_trafficHandlingPriority && field_allocationOrRetentionPriority==other_value.field_allocationOrRetentionPriority && field_sourceStatisticsDescriptor==other_value.field_sourceStatisticsDescriptor && field_relocationRequirement==other_value.field_relocationRequirement && field_iE__Extensions==other_value.field_iE__Extensions; } boolean RAB__Parameters::is_bound() const { return (field_trafficClass.is_bound()) || (field_rAB__AsymmetryIndicator.is_bound()) || (field_maxBitrate.is_bound()) || (OPTIONAL_OMIT == field_guaranteedBitRate.get_selection() || field_guaranteedBitRate.is_bound()) || (field_deliveryOrder.is_bound()) || (field_maxSDU__Size.is_bound()) || (field_sDU__Parameters.is_bound()) || (OPTIONAL_OMIT == field_transferDelay.get_selection() || field_transferDelay.is_bound()) || (OPTIONAL_OMIT == field_trafficHandlingPriority.get_selection() || field_trafficHandlingPriority.is_bound()) || (OPTIONAL_OMIT == field_allocationOrRetentionPriority.get_selection() || field_allocationOrRetentionPriority.is_bound()) || (OPTIONAL_OMIT == field_sourceStatisticsDescriptor.get_selection() || field_sourceStatisticsDescriptor.is_bound()) || (OPTIONAL_OMIT == field_relocationRequirement.get_selection() || field_relocationRequirement.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean RAB__Parameters::is_value() const { return field_trafficClass.is_value() && field_rAB__AsymmetryIndicator.is_value() && field_maxBitrate.is_value() && (OPTIONAL_OMIT == field_guaranteedBitRate.get_selection() || field_guaranteedBitRate.is_value()) && field_deliveryOrder.is_value() && field_maxSDU__Size.is_value() && field_sDU__Parameters.is_value() && (OPTIONAL_OMIT == field_transferDelay.get_selection() || field_transferDelay.is_value()) && (OPTIONAL_OMIT == field_trafficHandlingPriority.get_selection() || field_trafficHandlingPriority.is_value()) && (OPTIONAL_OMIT == field_allocationOrRetentionPriority.get_selection() || field_allocationOrRetentionPriority.is_value()) && (OPTIONAL_OMIT == field_sourceStatisticsDescriptor.get_selection() || field_sourceStatisticsDescriptor.is_value()) && (OPTIONAL_OMIT == field_relocationRequirement.get_selection() || field_relocationRequirement.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int RAB__Parameters::size_of() const { int ret_val = 6; if (field_guaranteedBitRate.ispresent()) ret_val++; if (field_transferDelay.ispresent()) ret_val++; if (field_trafficHandlingPriority.ispresent()) ret_val++; if (field_allocationOrRetentionPriority.ispresent()) ret_val++; if (field_sourceStatisticsDescriptor.ispresent()) ret_val++; if (field_relocationRequirement.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void RAB__Parameters::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ trafficClass := "); field_trafficClass.log(); TTCN_Logger::log_event_str(", rAB_AsymmetryIndicator := "); field_rAB__AsymmetryIndicator.log(); TTCN_Logger::log_event_str(", maxBitrate := "); field_maxBitrate.log(); TTCN_Logger::log_event_str(", guaranteedBitRate := "); field_guaranteedBitRate.log(); TTCN_Logger::log_event_str(", deliveryOrder := "); field_deliveryOrder.log(); TTCN_Logger::log_event_str(", maxSDU_Size := "); field_maxSDU__Size.log(); TTCN_Logger::log_event_str(", sDU_Parameters := "); field_sDU__Parameters.log(); TTCN_Logger::log_event_str(", transferDelay := "); field_transferDelay.log(); TTCN_Logger::log_event_str(", trafficHandlingPriority := "); field_trafficHandlingPriority.log(); TTCN_Logger::log_event_str(", allocationOrRetentionPriority := "); field_allocationOrRetentionPriority.log(); TTCN_Logger::log_event_str(", sourceStatisticsDescriptor := "); field_sourceStatisticsDescriptor.log(); TTCN_Logger::log_event_str(", relocationRequirement := "); field_relocationRequirement.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void RAB__Parameters::set_implicit_omit() { if (trafficClass().is_bound()) trafficClass().set_implicit_omit(); if (rAB__AsymmetryIndicator().is_bound()) rAB__AsymmetryIndicator().set_implicit_omit(); if (maxBitrate().is_bound()) maxBitrate().set_implicit_omit(); if (!guaranteedBitRate().is_bound()) guaranteedBitRate() = OMIT_VALUE; else guaranteedBitRate().set_implicit_omit(); if (deliveryOrder().is_bound()) deliveryOrder().set_implicit_omit(); if (maxSDU__Size().is_bound()) maxSDU__Size().set_implicit_omit(); if (sDU__Parameters().is_bound()) sDU__Parameters().set_implicit_omit(); if (!transferDelay().is_bound()) transferDelay() = OMIT_VALUE; else transferDelay().set_implicit_omit(); if (!trafficHandlingPriority().is_bound()) trafficHandlingPriority() = OMIT_VALUE; else trafficHandlingPriority().set_implicit_omit(); if (!allocationOrRetentionPriority().is_bound()) allocationOrRetentionPriority() = OMIT_VALUE; else allocationOrRetentionPriority().set_implicit_omit(); if (!sourceStatisticsDescriptor().is_bound()) sourceStatisticsDescriptor() = OMIT_VALUE; else sourceStatisticsDescriptor().set_implicit_omit(); if (!relocationRequirement().is_bound()) relocationRequirement() = OMIT_VALUE; else relocationRequirement().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RAB__Parameters::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (130 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) trafficClass().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAB__AsymmetryIndicator().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) maxBitrate().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) guaranteedBitRate().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) deliveryOrder().set_param(*param.get_elem(4)); if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) maxSDU__Size().set_param(*param.get_elem(5)); if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) sDU__Parameters().set_param(*param.get_elem(6)); if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) transferDelay().set_param(*param.get_elem(7)); if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) trafficHandlingPriority().set_param(*param.get_elem(8)); if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) allocationOrRetentionPriority().set_param(*param.get_elem(9)); if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) sourceStatisticsDescriptor().set_param(*param.get_elem(10)); if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) relocationRequirement().set_param(*param.get_elem(11)); if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(12)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "trafficClass")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trafficClass().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAB_AsymmetryIndicator")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAB__AsymmetryIndicator().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "maxBitrate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { maxBitrate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "guaranteedBitRate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { guaranteedBitRate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "deliveryOrder")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { deliveryOrder().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "maxSDU_Size")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { maxSDU__Size().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_Parameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__Parameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "transferDelay")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { transferDelay().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trafficHandlingPriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trafficHandlingPriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "allocationOrRetentionPriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { allocationOrRetentionPriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sourceStatisticsDescriptor")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sourceStatisticsDescriptor().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "relocationRequirement")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { relocationRequirement().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RAB-Parameters: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.RAB-Parameters"); } } void RAB__Parameters::encode_text(Text_Buf& text_buf) const { field_trafficClass.encode_text(text_buf); field_rAB__AsymmetryIndicator.encode_text(text_buf); field_maxBitrate.encode_text(text_buf); field_guaranteedBitRate.encode_text(text_buf); field_deliveryOrder.encode_text(text_buf); field_maxSDU__Size.encode_text(text_buf); field_sDU__Parameters.encode_text(text_buf); field_transferDelay.encode_text(text_buf); field_trafficHandlingPriority.encode_text(text_buf); field_allocationOrRetentionPriority.encode_text(text_buf); field_sourceStatisticsDescriptor.encode_text(text_buf); field_relocationRequirement.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void RAB__Parameters::decode_text(Text_Buf& text_buf) { field_trafficClass.decode_text(text_buf); field_rAB__AsymmetryIndicator.decode_text(text_buf); field_maxBitrate.decode_text(text_buf); field_guaranteedBitRate.decode_text(text_buf); field_deliveryOrder.decode_text(text_buf); field_maxSDU__Size.decode_text(text_buf); field_sDU__Parameters.decode_text(text_buf); field_transferDelay.decode_text(text_buf); field_trafficHandlingPriority.decode_text(text_buf); field_allocationOrRetentionPriority.decode_text(text_buf); field_sourceStatisticsDescriptor.decode_text(text_buf); field_relocationRequirement.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void RAB__Parameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RAB__Parameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RAB__Parameters::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("trafficClass': "); new_tlv->add_TLV(field_trafficClass.BER_encode_TLV(RAB__Parameters_trafficClass_descr_, p_coding)); ec_1.set_msg("rAB_AsymmetryIndicator': "); new_tlv->add_TLV(field_rAB__AsymmetryIndicator.BER_encode_TLV(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_coding)); ec_1.set_msg("maxBitrate': "); new_tlv->add_TLV(field_maxBitrate.BER_encode_TLV(RAB__Parameters_maxBitrate_descr_, p_coding)); ec_1.set_msg("guaranteedBitRate': "); new_tlv->add_TLV(field_guaranteedBitRate.BER_encode_TLV(RAB__Parameters_guaranteedBitRate_descr_, p_coding)); ec_1.set_msg("deliveryOrder': "); new_tlv->add_TLV(field_deliveryOrder.BER_encode_TLV(RAB__Parameters_deliveryOrder_descr_, p_coding)); ec_1.set_msg("maxSDU_Size': "); new_tlv->add_TLV(field_maxSDU__Size.BER_encode_TLV(RAB__Parameters_maxSDU__Size_descr_, p_coding)); ec_1.set_msg("sDU_Parameters': "); new_tlv->add_TLV(field_sDU__Parameters.BER_encode_TLV(RAB__Parameters_sDU__Parameters_descr_, p_coding)); ec_1.set_msg("transferDelay': "); new_tlv->add_TLV(field_transferDelay.BER_encode_TLV(RAB__Parameters_transferDelay_descr_, p_coding)); ec_1.set_msg("trafficHandlingPriority': "); new_tlv->add_TLV(field_trafficHandlingPriority.BER_encode_TLV(RAB__Parameters_trafficHandlingPriority_descr_, p_coding)); ec_1.set_msg("allocationOrRetentionPriority': "); new_tlv->add_TLV(field_allocationOrRetentionPriority.BER_encode_TLV(RAB__Parameters_allocationOrRetentionPriority_descr_, p_coding)); ec_1.set_msg("sourceStatisticsDescriptor': "); new_tlv->add_TLV(field_sourceStatisticsDescriptor.BER_encode_TLV(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_coding)); ec_1.set_msg("relocationRequirement': "); new_tlv->add_TLV(field_relocationRequirement.BER_encode_TLV(RAB__Parameters_relocationRequirement_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(RAB__Parameters_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RAB__Parameters::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.RAB-Parameters' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("trafficClass': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_trafficClass.BER_decode_TLV(RAB__Parameters_trafficClass_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("rAB_AsymmetryIndicator': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_rAB__AsymmetryIndicator.BER_decode_TLV(RAB__Parameters_rAB__AsymmetryIndicator_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("maxBitrate': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_maxBitrate.BER_decode_TLV(RAB__Parameters_maxBitrate_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("guaranteedBitRate': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_guaranteedBitRate=OMIT_VALUE; else { field_guaranteedBitRate.BER_decode_TLV(RAB__Parameters_guaranteedBitRate_descr_, tmp_tlv, L_form); if(field_guaranteedBitRate.ispresent()) tlv_present=FALSE; } ec_2.set_msg("deliveryOrder': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_deliveryOrder.BER_decode_TLV(RAB__Parameters_deliveryOrder_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("maxSDU_Size': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_maxSDU__Size.BER_decode_TLV(RAB__Parameters_maxSDU__Size_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("sDU_Parameters': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_sDU__Parameters.BER_decode_TLV(RAB__Parameters_sDU__Parameters_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("transferDelay': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_transferDelay=OMIT_VALUE; else { field_transferDelay.BER_decode_TLV(RAB__Parameters_transferDelay_descr_, tmp_tlv, L_form); if(field_transferDelay.ispresent()) tlv_present=FALSE; } ec_2.set_msg("trafficHandlingPriority': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_trafficHandlingPriority=OMIT_VALUE; else { field_trafficHandlingPriority.BER_decode_TLV(RAB__Parameters_trafficHandlingPriority_descr_, tmp_tlv, L_form); if(field_trafficHandlingPriority.ispresent()) tlv_present=FALSE; } ec_2.set_msg("allocationOrRetentionPriority': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_allocationOrRetentionPriority=OMIT_VALUE; else { field_allocationOrRetentionPriority.BER_decode_TLV(RAB__Parameters_allocationOrRetentionPriority_descr_, tmp_tlv, L_form); if(field_allocationOrRetentionPriority.ispresent()) tlv_present=FALSE; } ec_2.set_msg("sourceStatisticsDescriptor': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_sourceStatisticsDescriptor=OMIT_VALUE; else { field_sourceStatisticsDescriptor.BER_decode_TLV(RAB__Parameters_sourceStatisticsDescriptor_descr_, tmp_tlv, L_form); if(field_sourceStatisticsDescriptor.ispresent()) tlv_present=FALSE; } ec_2.set_msg("relocationRequirement': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_relocationRequirement=OMIT_VALUE; else { field_relocationRequirement.BER_decode_TLV(RAB__Parameters_relocationRequirement_descr_, tmp_tlv, L_form); if(field_relocationRequirement.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(RAB__Parameters_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int RAB__Parameters::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.RAB-Parameters."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "trafficClass"); enc_len += field_trafficClass.JSON_encode(RAB__Parameters_trafficClass_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAB_AsymmetryIndicator"); enc_len += field_rAB__AsymmetryIndicator.JSON_encode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "maxBitrate"); enc_len += field_maxBitrate.JSON_encode(RAB__Parameters_maxBitrate_descr_, p_tok, FALSE); } if (field_guaranteedBitRate.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "guaranteedBitRate"); enc_len += field_guaranteedBitRate.JSON_encode(RAB__Parameters_guaranteedBitRate_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "deliveryOrder"); enc_len += field_deliveryOrder.JSON_encode(RAB__Parameters_deliveryOrder_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "maxSDU_Size"); enc_len += field_maxSDU__Size.JSON_encode(RAB__Parameters_maxSDU__Size_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "sDU_Parameters"); enc_len += field_sDU__Parameters.JSON_encode(RAB__Parameters_sDU__Parameters_descr_, p_tok, FALSE); } if (field_transferDelay.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "transferDelay"); enc_len += field_transferDelay.JSON_encode(RAB__Parameters_transferDelay_descr_, p_tok, FALSE); } if (field_trafficHandlingPriority.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "trafficHandlingPriority"); enc_len += field_trafficHandlingPriority.JSON_encode(RAB__Parameters_trafficHandlingPriority_descr_, p_tok, FALSE); } if (field_allocationOrRetentionPriority.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "allocationOrRetentionPriority"); enc_len += field_allocationOrRetentionPriority.JSON_encode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_tok, FALSE); } if (field_sourceStatisticsDescriptor.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "sourceStatisticsDescriptor"); enc_len += field_sourceStatisticsDescriptor.JSON_encode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_tok, FALSE); } if (field_relocationRequirement.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "relocationRequirement"); enc_len += field_relocationRequirement.JSON_encode(RAB__Parameters_relocationRequirement_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(RAB__Parameters_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int RAB__Parameters::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean trafficClass_found = FALSE; boolean rAB__AsymmetryIndicator_found = FALSE; boolean maxBitrate_found = FALSE; boolean guaranteedBitRate_found = FALSE; boolean deliveryOrder_found = FALSE; boolean maxSDU__Size_found = FALSE; boolean sDU__Parameters_found = FALSE; boolean transferDelay_found = FALSE; boolean trafficHandlingPriority_found = FALSE; boolean allocationOrRetentionPriority_found = FALSE; boolean sourceStatisticsDescriptor_found = FALSE; boolean relocationRequirement_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (12 == name_len && 0 == strncmp(fld_name, "trafficClass", name_len)) { trafficClass_found = TRUE; int ret_val = field_trafficClass.JSON_decode(RAB__Parameters_trafficClass_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 12, "trafficClass"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (22 == name_len && 0 == strncmp(fld_name, "rAB_AsymmetryIndicator", name_len)) { rAB__AsymmetryIndicator_found = TRUE; int ret_val = field_rAB__AsymmetryIndicator.JSON_decode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 22, "rAB_AsymmetryIndicator"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (10 == name_len && 0 == strncmp(fld_name, "maxBitrate", name_len)) { maxBitrate_found = TRUE; int ret_val = field_maxBitrate.JSON_decode(RAB__Parameters_maxBitrate_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 10, "maxBitrate"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (17 == name_len && 0 == strncmp(fld_name, "guaranteedBitRate", name_len)) { guaranteedBitRate_found = TRUE; int ret_val = field_guaranteedBitRate.JSON_decode(RAB__Parameters_guaranteedBitRate_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 17, "guaranteedBitRate"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "deliveryOrder", name_len)) { deliveryOrder_found = TRUE; int ret_val = field_deliveryOrder.JSON_decode(RAB__Parameters_deliveryOrder_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "deliveryOrder"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "maxSDU_Size", name_len)) { maxSDU__Size_found = TRUE; int ret_val = field_maxSDU__Size.JSON_decode(RAB__Parameters_maxSDU__Size_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "maxSDU_Size"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "sDU_Parameters", name_len)) { sDU__Parameters_found = TRUE; int ret_val = field_sDU__Parameters.JSON_decode(RAB__Parameters_sDU__Parameters_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "sDU_Parameters"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "transferDelay", name_len)) { transferDelay_found = TRUE; int ret_val = field_transferDelay.JSON_decode(RAB__Parameters_transferDelay_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "transferDelay"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (23 == name_len && 0 == strncmp(fld_name, "trafficHandlingPriority", name_len)) { trafficHandlingPriority_found = TRUE; int ret_val = field_trafficHandlingPriority.JSON_decode(RAB__Parameters_trafficHandlingPriority_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 23, "trafficHandlingPriority"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (29 == name_len && 0 == strncmp(fld_name, "allocationOrRetentionPriority", name_len)) { allocationOrRetentionPriority_found = TRUE; int ret_val = field_allocationOrRetentionPriority.JSON_decode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 29, "allocationOrRetentionPriority"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (26 == name_len && 0 == strncmp(fld_name, "sourceStatisticsDescriptor", name_len)) { sourceStatisticsDescriptor_found = TRUE; int ret_val = field_sourceStatisticsDescriptor.JSON_decode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 26, "sourceStatisticsDescriptor"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (21 == name_len && 0 == strncmp(fld_name, "relocationRequirement", name_len)) { relocationRequirement_found = TRUE; int ret_val = field_relocationRequirement.JSON_decode(RAB__Parameters_relocationRequirement_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 21, "relocationRequirement"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(RAB__Parameters_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!trafficClass_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "trafficClass"); return JSON_ERROR_FATAL; } if (!rAB__AsymmetryIndicator_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "rAB_AsymmetryIndicator"); return JSON_ERROR_FATAL; } if (!maxBitrate_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "maxBitrate"); return JSON_ERROR_FATAL; } if (!guaranteedBitRate_found) { field_guaranteedBitRate = OMIT_VALUE; } if (!deliveryOrder_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "deliveryOrder"); return JSON_ERROR_FATAL; } if (!maxSDU__Size_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "maxSDU_Size"); return JSON_ERROR_FATAL; } if (!sDU__Parameters_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "sDU_Parameters"); return JSON_ERROR_FATAL; } if (!transferDelay_found) { field_transferDelay = OMIT_VALUE; } if (!trafficHandlingPriority_found) { field_trafficHandlingPriority = OMIT_VALUE; } if (!allocationOrRetentionPriority_found) { field_allocationOrRetentionPriority = OMIT_VALUE; } if (!sourceStatisticsDescriptor_found) { field_sourceStatisticsDescriptor = OMIT_VALUE; } if (!relocationRequirement_found) { field_relocationRequirement = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int RAB__Parameters::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_guaranteedBitRate.is_present()) { c |= 64; } if (field_transferDelay.is_present()) { c |= 32; } if (field_trafficHandlingPriority.is_present()) { c |= 16; } if (field_allocationOrRetentionPriority.is_present()) { c |= 8; } if (field_sourceStatisticsDescriptor.is_present()) { c |= 4; } if (field_relocationRequirement.is_present()) { c |= 2; } if (field_iE__Extensions.is_present()) { c |= 1; } p_buf.put_c(c); c = 0 ; field_trafficClass.OER_encode(RAB__Parameters_trafficClass_descr_, p_buf); field_rAB__AsymmetryIndicator.OER_encode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_buf); field_maxBitrate.OER_encode(RAB__Parameters_maxBitrate_descr_, p_buf); if (field_guaranteedBitRate.is_present()) field_guaranteedBitRate.OER_encode(RAB__Parameters_guaranteedBitRate_descr_, p_buf); field_deliveryOrder.OER_encode(RAB__Parameters_deliveryOrder_descr_, p_buf); field_maxSDU__Size.OER_encode(RAB__Parameters_maxSDU__Size_descr_, p_buf); field_sDU__Parameters.OER_encode(RAB__Parameters_sDU__Parameters_descr_, p_buf); if (field_transferDelay.is_present()) field_transferDelay.OER_encode(RAB__Parameters_transferDelay_descr_, p_buf); if (field_trafficHandlingPriority.is_present()) field_trafficHandlingPriority.OER_encode(RAB__Parameters_trafficHandlingPriority_descr_, p_buf); if (field_allocationOrRetentionPriority.is_present()) field_allocationOrRetentionPriority.OER_encode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_buf); if (field_sourceStatisticsDescriptor.is_present()) field_sourceStatisticsDescriptor.OER_encode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_buf); if (field_relocationRequirement.is_present()) field_relocationRequirement.OER_encode(RAB__Parameters_relocationRequirement_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(RAB__Parameters_iE__Extensions_descr_, p_buf); return 0; } int RAB__Parameters::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_trafficClass.OER_decode(RAB__Parameters_trafficClass_descr_, p_buf, p_oer); field_rAB__AsymmetryIndicator.OER_decode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_buf, p_oer); field_maxBitrate.OER_decode(RAB__Parameters_maxBitrate_descr_, p_buf, p_oer); if (uc[0] & 64) field_guaranteedBitRate.OER_decode(RAB__Parameters_guaranteedBitRate_descr_, p_buf, p_oer); else field_guaranteedBitRate = OMIT_VALUE; field_deliveryOrder.OER_decode(RAB__Parameters_deliveryOrder_descr_, p_buf, p_oer); field_maxSDU__Size.OER_decode(RAB__Parameters_maxSDU__Size_descr_, p_buf, p_oer); field_sDU__Parameters.OER_decode(RAB__Parameters_sDU__Parameters_descr_, p_buf, p_oer); if (uc[0] & 32) field_transferDelay.OER_decode(RAB__Parameters_transferDelay_descr_, p_buf, p_oer); else field_transferDelay = OMIT_VALUE; if (uc[0] & 16) field_trafficHandlingPriority.OER_decode(RAB__Parameters_trafficHandlingPriority_descr_, p_buf, p_oer); else field_trafficHandlingPriority = OMIT_VALUE; if (uc[0] & 8) field_allocationOrRetentionPriority.OER_decode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_buf, p_oer); else field_allocationOrRetentionPriority = OMIT_VALUE; if (uc[0] & 4) field_sourceStatisticsDescriptor.OER_decode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_buf, p_oer); else field_sourceStatisticsDescriptor = OMIT_VALUE; if (uc[0] & 2) field_relocationRequirement.OER_decode(RAB__Parameters_relocationRequirement_descr_, p_buf, p_oer); else field_relocationRequirement = OMIT_VALUE; if (uc[0] & 1) field_iE__Extensions.OER_decode(RAB__Parameters_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void RAB__Parameters::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_guaranteedBitRate_present = field_guaranteedBitRate.is_present(); p_buf.PER_put_bit(field_guaranteedBitRate_present); boolean field_transferDelay_present = field_transferDelay.is_present(); p_buf.PER_put_bit(field_transferDelay_present); boolean field_trafficHandlingPriority_present = field_trafficHandlingPriority.is_present(); p_buf.PER_put_bit(field_trafficHandlingPriority_present); boolean field_allocationOrRetentionPriority_present = field_allocationOrRetentionPriority.is_present(); p_buf.PER_put_bit(field_allocationOrRetentionPriority_present); boolean field_sourceStatisticsDescriptor_present = field_sourceStatisticsDescriptor.is_present(); p_buf.PER_put_bit(field_sourceStatisticsDescriptor_present); boolean field_relocationRequirement_present = field_relocationRequirement.is_present(); p_buf.PER_put_bit(field_relocationRequirement_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_trafficClass.PER_encode(RAB__Parameters_trafficClass_descr_, p_buf, p_options); field_rAB__AsymmetryIndicator.PER_encode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_buf, p_options); field_maxBitrate.PER_encode(RAB__Parameters_maxBitrate_descr_, p_buf, p_options); if (field_guaranteedBitRate_present) field_guaranteedBitRate.PER_encode(RAB__Parameters_guaranteedBitRate_descr_, p_buf, p_options); field_deliveryOrder.PER_encode(RAB__Parameters_deliveryOrder_descr_, p_buf, p_options); field_maxSDU__Size.PER_encode(RAB__Parameters_maxSDU__Size_descr_, p_buf, p_options); field_sDU__Parameters.PER_encode(RAB__Parameters_sDU__Parameters_descr_, p_buf, p_options); if (field_transferDelay_present) field_transferDelay.PER_encode(RAB__Parameters_transferDelay_descr_, p_buf, p_options); if (field_trafficHandlingPriority_present) field_trafficHandlingPriority.PER_encode(RAB__Parameters_trafficHandlingPriority_descr_, p_buf, p_options); if (field_allocationOrRetentionPriority_present) field_allocationOrRetentionPriority.PER_encode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_buf, p_options); if (field_sourceStatisticsDescriptor_present) field_sourceStatisticsDescriptor.PER_encode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_buf, p_options); if (field_relocationRequirement_present) field_relocationRequirement.PER_encode(RAB__Parameters_relocationRequirement_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(RAB__Parameters_iE__Extensions_descr_, p_buf, p_options); } void RAB__Parameters::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_guaranteedBitRate_present = p_buf.PER_get_bit(); boolean field_transferDelay_present = p_buf.PER_get_bit(); boolean field_trafficHandlingPriority_present = p_buf.PER_get_bit(); boolean field_allocationOrRetentionPriority_present = p_buf.PER_get_bit(); boolean field_sourceStatisticsDescriptor_present = p_buf.PER_get_bit(); boolean field_relocationRequirement_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_trafficClass.PER_decode(RAB__Parameters_trafficClass_descr_, p_buf, p_options); field_rAB__AsymmetryIndicator.PER_decode(RAB__Parameters_rAB__AsymmetryIndicator_descr_, p_buf, p_options); field_maxBitrate.PER_decode(RAB__Parameters_maxBitrate_descr_, p_buf, p_options); if (field_guaranteedBitRate_present) field_guaranteedBitRate.PER_decode(RAB__Parameters_guaranteedBitRate_descr_, p_buf, p_options); else field_guaranteedBitRate = OMIT_VALUE; field_deliveryOrder.PER_decode(RAB__Parameters_deliveryOrder_descr_, p_buf, p_options); field_maxSDU__Size.PER_decode(RAB__Parameters_maxSDU__Size_descr_, p_buf, p_options); field_sDU__Parameters.PER_decode(RAB__Parameters_sDU__Parameters_descr_, p_buf, p_options); if (field_transferDelay_present) field_transferDelay.PER_decode(RAB__Parameters_transferDelay_descr_, p_buf, p_options); else field_transferDelay = OMIT_VALUE; if (field_trafficHandlingPriority_present) field_trafficHandlingPriority.PER_decode(RAB__Parameters_trafficHandlingPriority_descr_, p_buf, p_options); else field_trafficHandlingPriority = OMIT_VALUE; if (field_allocationOrRetentionPriority_present) field_allocationOrRetentionPriority.PER_decode(RAB__Parameters_allocationOrRetentionPriority_descr_, p_buf, p_options); else field_allocationOrRetentionPriority = OMIT_VALUE; if (field_sourceStatisticsDescriptor_present) field_sourceStatisticsDescriptor.PER_decode(RAB__Parameters_sourceStatisticsDescriptor_descr_, p_buf, p_options); else field_sourceStatisticsDescriptor = OMIT_VALUE; if (field_relocationRequirement_present) field_relocationRequirement.PER_decode(RAB__Parameters_relocationRequirement_descr_, p_buf, p_options); else field_relocationRequirement = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(RAB__Parameters_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct RAB__Parameters_template::single_value_struct { TrafficClass_template field_trafficClass; RAB__AsymmetryIndicator_template field_rAB__AsymmetryIndicator; RAB__Parameter__MaxBitrateList_template field_maxBitrate; RAB__Parameter__GuaranteedBitrateList_template field_guaranteedBitRate; DeliveryOrder_template field_deliveryOrder; INTEGER_template field_maxSDU__Size; SDU__Parameters_template field_sDU__Parameters; INTEGER_template field_transferDelay; INTEGER_template field_trafficHandlingPriority; AllocationOrRetentionPriority_template field_allocationOrRetentionPriority; SourceStatisticsDescriptor_template field_sourceStatisticsDescriptor; RelocationRequirement_template field_relocationRequirement; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template field_iE__Extensions; }; void RAB__Parameters_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_trafficClass = ANY_VALUE; single_value->field_rAB__AsymmetryIndicator = ANY_VALUE; single_value->field_maxBitrate = ANY_VALUE; single_value->field_guaranteedBitRate = ANY_OR_OMIT; single_value->field_deliveryOrder = ANY_VALUE; single_value->field_maxSDU__Size = ANY_VALUE; single_value->field_sDU__Parameters = ANY_VALUE; single_value->field_transferDelay = ANY_OR_OMIT; single_value->field_trafficHandlingPriority = ANY_OR_OMIT; single_value->field_allocationOrRetentionPriority = ANY_OR_OMIT; single_value->field_sourceStatisticsDescriptor = ANY_OR_OMIT; single_value->field_relocationRequirement = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void RAB__Parameters_template::copy_value(const RAB__Parameters& other_value) { single_value = new single_value_struct; if (other_value.trafficClass().is_bound()) { single_value->field_trafficClass = other_value.trafficClass(); } else { single_value->field_trafficClass.clean_up(); } if (other_value.rAB__AsymmetryIndicator().is_bound()) { single_value->field_rAB__AsymmetryIndicator = other_value.rAB__AsymmetryIndicator(); } else { single_value->field_rAB__AsymmetryIndicator.clean_up(); } if (other_value.maxBitrate().is_bound()) { single_value->field_maxBitrate = other_value.maxBitrate(); } else { single_value->field_maxBitrate.clean_up(); } if (other_value.guaranteedBitRate().is_bound()) { if (other_value.guaranteedBitRate().ispresent()) single_value->field_guaranteedBitRate = other_value.guaranteedBitRate()(); else single_value->field_guaranteedBitRate = OMIT_VALUE; } else { single_value->field_guaranteedBitRate.clean_up(); } if (other_value.deliveryOrder().is_bound()) { single_value->field_deliveryOrder = other_value.deliveryOrder(); } else { single_value->field_deliveryOrder.clean_up(); } if (other_value.maxSDU__Size().is_bound()) { single_value->field_maxSDU__Size = other_value.maxSDU__Size(); } else { single_value->field_maxSDU__Size.clean_up(); } if (other_value.sDU__Parameters().is_bound()) { single_value->field_sDU__Parameters = other_value.sDU__Parameters(); } else { single_value->field_sDU__Parameters.clean_up(); } if (other_value.transferDelay().is_bound()) { if (other_value.transferDelay().ispresent()) single_value->field_transferDelay = other_value.transferDelay()(); else single_value->field_transferDelay = OMIT_VALUE; } else { single_value->field_transferDelay.clean_up(); } if (other_value.trafficHandlingPriority().is_bound()) { if (other_value.trafficHandlingPriority().ispresent()) single_value->field_trafficHandlingPriority = other_value.trafficHandlingPriority()(); else single_value->field_trafficHandlingPriority = OMIT_VALUE; } else { single_value->field_trafficHandlingPriority.clean_up(); } if (other_value.allocationOrRetentionPriority().is_bound()) { if (other_value.allocationOrRetentionPriority().ispresent()) single_value->field_allocationOrRetentionPriority = other_value.allocationOrRetentionPriority()(); else single_value->field_allocationOrRetentionPriority = OMIT_VALUE; } else { single_value->field_allocationOrRetentionPriority.clean_up(); } if (other_value.sourceStatisticsDescriptor().is_bound()) { if (other_value.sourceStatisticsDescriptor().ispresent()) single_value->field_sourceStatisticsDescriptor = other_value.sourceStatisticsDescriptor()(); else single_value->field_sourceStatisticsDescriptor = OMIT_VALUE; } else { single_value->field_sourceStatisticsDescriptor.clean_up(); } if (other_value.relocationRequirement().is_bound()) { if (other_value.relocationRequirement().ispresent()) single_value->field_relocationRequirement = other_value.relocationRequirement()(); else single_value->field_relocationRequirement = OMIT_VALUE; } else { single_value->field_relocationRequirement.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void RAB__Parameters_template::copy_template(const RAB__Parameters_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.trafficClass().get_selection()) { single_value->field_trafficClass = other_value.trafficClass(); } else { single_value->field_trafficClass.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.rAB__AsymmetryIndicator().get_selection()) { single_value->field_rAB__AsymmetryIndicator = other_value.rAB__AsymmetryIndicator(); } else { single_value->field_rAB__AsymmetryIndicator.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.maxBitrate().get_selection()) { single_value->field_maxBitrate = other_value.maxBitrate(); } else { single_value->field_maxBitrate.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.guaranteedBitRate().get_selection()) { single_value->field_guaranteedBitRate = other_value.guaranteedBitRate(); } else { single_value->field_guaranteedBitRate.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.deliveryOrder().get_selection()) { single_value->field_deliveryOrder = other_value.deliveryOrder(); } else { single_value->field_deliveryOrder.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.maxSDU__Size().get_selection()) { single_value->field_maxSDU__Size = other_value.maxSDU__Size(); } else { single_value->field_maxSDU__Size.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.sDU__Parameters().get_selection()) { single_value->field_sDU__Parameters = other_value.sDU__Parameters(); } else { single_value->field_sDU__Parameters.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.transferDelay().get_selection()) { single_value->field_transferDelay = other_value.transferDelay(); } else { single_value->field_transferDelay.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.trafficHandlingPriority().get_selection()) { single_value->field_trafficHandlingPriority = other_value.trafficHandlingPriority(); } else { single_value->field_trafficHandlingPriority.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.allocationOrRetentionPriority().get_selection()) { single_value->field_allocationOrRetentionPriority = other_value.allocationOrRetentionPriority(); } else { single_value->field_allocationOrRetentionPriority.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.sourceStatisticsDescriptor().get_selection()) { single_value->field_sourceStatisticsDescriptor = other_value.sourceStatisticsDescriptor(); } else { single_value->field_sourceStatisticsDescriptor.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.relocationRequirement().get_selection()) { single_value->field_relocationRequirement = other_value.relocationRequirement(); } else { single_value->field_relocationRequirement.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RAB__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RAB__Parameters_template(*other_value.implication_.precondition); implication_.implied_template = new RAB__Parameters_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.RAB-Parameters."); break; } set_selection(other_value); } RAB__Parameters_template::RAB__Parameters_template() { } RAB__Parameters_template::RAB__Parameters_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RAB__Parameters_template::RAB__Parameters_template(const RAB__Parameters& other_value) { copy_value(other_value); } RAB__Parameters_template::RAB__Parameters_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAB__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.RAB-Parameters from an unbound optional field."); } } RAB__Parameters_template::RAB__Parameters_template(RAB__Parameters_template* p_precondition, RAB__Parameters_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RAB__Parameters_template::RAB__Parameters_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RAB__Parameters_template::RAB__Parameters_template(const RAB__Parameters_template& other_value) : Base_Template() { copy_template(other_value); } RAB__Parameters_template::~RAB__Parameters_template() { clean_up(); } RAB__Parameters_template& RAB__Parameters_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RAB__Parameters_template& RAB__Parameters_template::operator=(const RAB__Parameters& other_value) { clean_up(); copy_value(other_value); return *this; } RAB__Parameters_template& RAB__Parameters_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAB__Parameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.RAB-Parameters."); } return *this; } RAB__Parameters_template& RAB__Parameters_template::operator=(const RAB__Parameters_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RAB__Parameters_template::match(const RAB__Parameters& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.trafficClass().is_bound()) return FALSE; if(!single_value->field_trafficClass.match(other_value.trafficClass(), legacy))return FALSE; if(!other_value.rAB__AsymmetryIndicator().is_bound()) return FALSE; if(!single_value->field_rAB__AsymmetryIndicator.match(other_value.rAB__AsymmetryIndicator(), legacy))return FALSE; if(!other_value.maxBitrate().is_bound()) return FALSE; if(!single_value->field_maxBitrate.match(other_value.maxBitrate(), legacy))return FALSE; if(!other_value.guaranteedBitRate().is_bound()) return FALSE; if((other_value.guaranteedBitRate().ispresent() ? !single_value->field_guaranteedBitRate.match((const RAB__Parameter__GuaranteedBitrateList&)other_value.guaranteedBitRate(), legacy) : !single_value->field_guaranteedBitRate.match_omit(legacy)))return FALSE; if(!other_value.deliveryOrder().is_bound()) return FALSE; if(!single_value->field_deliveryOrder.match(other_value.deliveryOrder(), legacy))return FALSE; if(!other_value.maxSDU__Size().is_bound()) return FALSE; if(!single_value->field_maxSDU__Size.match(other_value.maxSDU__Size(), legacy))return FALSE; if(!other_value.sDU__Parameters().is_bound()) return FALSE; if(!single_value->field_sDU__Parameters.match(other_value.sDU__Parameters(), legacy))return FALSE; if(!other_value.transferDelay().is_bound()) return FALSE; if((other_value.transferDelay().ispresent() ? !single_value->field_transferDelay.match((const INTEGER&)other_value.transferDelay(), legacy) : !single_value->field_transferDelay.match_omit(legacy)))return FALSE; if(!other_value.trafficHandlingPriority().is_bound()) return FALSE; if((other_value.trafficHandlingPriority().ispresent() ? !single_value->field_trafficHandlingPriority.match((const INTEGER&)other_value.trafficHandlingPriority(), legacy) : !single_value->field_trafficHandlingPriority.match_omit(legacy)))return FALSE; if(!other_value.allocationOrRetentionPriority().is_bound()) return FALSE; if((other_value.allocationOrRetentionPriority().ispresent() ? !single_value->field_allocationOrRetentionPriority.match((const AllocationOrRetentionPriority&)other_value.allocationOrRetentionPriority(), legacy) : !single_value->field_allocationOrRetentionPriority.match_omit(legacy)))return FALSE; if(!other_value.sourceStatisticsDescriptor().is_bound()) return FALSE; if((other_value.sourceStatisticsDescriptor().ispresent() ? !single_value->field_sourceStatisticsDescriptor.match((const SourceStatisticsDescriptor&)other_value.sourceStatisticsDescriptor(), legacy) : !single_value->field_sourceStatisticsDescriptor.match_omit(legacy)))return FALSE; if(!other_value.relocationRequirement().is_bound()) return FALSE; if((other_value.relocationRequirement().ispresent() ? !single_value->field_relocationRequirement.match((const RelocationRequirement&)other_value.relocationRequirement(), legacy) : !single_value->field_relocationRequirement.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.RAB-Parameters."); } return FALSE; } boolean RAB__Parameters_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_trafficClass.is_bound() || single_value->field_rAB__AsymmetryIndicator.is_bound() || single_value->field_maxBitrate.is_bound() || (single_value->field_guaranteedBitRate.is_omit() || single_value->field_guaranteedBitRate.is_bound()) || single_value->field_deliveryOrder.is_bound() || single_value->field_maxSDU__Size.is_bound() || single_value->field_sDU__Parameters.is_bound() || (single_value->field_transferDelay.is_omit() || single_value->field_transferDelay.is_bound()) || (single_value->field_trafficHandlingPriority.is_omit() || single_value->field_trafficHandlingPriority.is_bound()) || (single_value->field_allocationOrRetentionPriority.is_omit() || single_value->field_allocationOrRetentionPriority.is_bound()) || (single_value->field_sourceStatisticsDescriptor.is_omit() || single_value->field_sourceStatisticsDescriptor.is_bound()) || (single_value->field_relocationRequirement.is_omit() || single_value->field_relocationRequirement.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean RAB__Parameters_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_trafficClass.is_value() && single_value->field_rAB__AsymmetryIndicator.is_value() && single_value->field_maxBitrate.is_value() && (single_value->field_guaranteedBitRate.is_omit() || single_value->field_guaranteedBitRate.is_value()) && single_value->field_deliveryOrder.is_value() && single_value->field_maxSDU__Size.is_value() && single_value->field_sDU__Parameters.is_value() && (single_value->field_transferDelay.is_omit() || single_value->field_transferDelay.is_value()) && (single_value->field_trafficHandlingPriority.is_omit() || single_value->field_trafficHandlingPriority.is_value()) && (single_value->field_allocationOrRetentionPriority.is_omit() || single_value->field_allocationOrRetentionPriority.is_value()) && (single_value->field_sourceStatisticsDescriptor.is_omit() || single_value->field_sourceStatisticsDescriptor.is_value()) && (single_value->field_relocationRequirement.is_omit() || single_value->field_relocationRequirement.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void RAB__Parameters_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RAB__Parameters RAB__Parameters_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.RAB-Parameters."); RAB__Parameters ret_val; if (single_value->field_trafficClass.is_bound()) { ret_val.trafficClass() = single_value->field_trafficClass.valueof(); } if (single_value->field_rAB__AsymmetryIndicator.is_bound()) { ret_val.rAB__AsymmetryIndicator() = single_value->field_rAB__AsymmetryIndicator.valueof(); } if (single_value->field_maxBitrate.is_bound()) { ret_val.maxBitrate() = single_value->field_maxBitrate.valueof(); } if (single_value->field_guaranteedBitRate.is_omit()) ret_val.guaranteedBitRate() = OMIT_VALUE; else if (single_value->field_guaranteedBitRate.is_bound()) { ret_val.guaranteedBitRate() = single_value->field_guaranteedBitRate.valueof(); } if (single_value->field_deliveryOrder.is_bound()) { ret_val.deliveryOrder() = single_value->field_deliveryOrder.valueof(); } if (single_value->field_maxSDU__Size.is_bound()) { ret_val.maxSDU__Size() = single_value->field_maxSDU__Size.valueof(); } if (single_value->field_sDU__Parameters.is_bound()) { ret_val.sDU__Parameters() = single_value->field_sDU__Parameters.valueof(); } if (single_value->field_transferDelay.is_omit()) ret_val.transferDelay() = OMIT_VALUE; else if (single_value->field_transferDelay.is_bound()) { ret_val.transferDelay() = single_value->field_transferDelay.valueof(); } if (single_value->field_trafficHandlingPriority.is_omit()) ret_val.trafficHandlingPriority() = OMIT_VALUE; else if (single_value->field_trafficHandlingPriority.is_bound()) { ret_val.trafficHandlingPriority() = single_value->field_trafficHandlingPriority.valueof(); } if (single_value->field_allocationOrRetentionPriority.is_omit()) ret_val.allocationOrRetentionPriority() = OMIT_VALUE; else if (single_value->field_allocationOrRetentionPriority.is_bound()) { ret_val.allocationOrRetentionPriority() = single_value->field_allocationOrRetentionPriority.valueof(); } if (single_value->field_sourceStatisticsDescriptor.is_omit()) ret_val.sourceStatisticsDescriptor() = OMIT_VALUE; else if (single_value->field_sourceStatisticsDescriptor.is_bound()) { ret_val.sourceStatisticsDescriptor() = single_value->field_sourceStatisticsDescriptor.valueof(); } if (single_value->field_relocationRequirement.is_omit()) ret_val.relocationRequirement() = OMIT_VALUE; else if (single_value->field_relocationRequirement.is_bound()) { ret_val.relocationRequirement() = single_value->field_relocationRequirement.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void RAB__Parameters_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.RAB-Parameters."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RAB__Parameters_template[list_length]; } RAB__Parameters_template& RAB__Parameters_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.RAB-Parameters."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.RAB-Parameters."); return value_list.list_value[list_index]; } TrafficClass_template& RAB__Parameters_template::trafficClass() { set_specific(); return single_value->field_trafficClass; } const TrafficClass_template& RAB__Parameters_template::trafficClass() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field trafficClass of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_trafficClass; } RAB__AsymmetryIndicator_template& RAB__Parameters_template::rAB__AsymmetryIndicator() { set_specific(); return single_value->field_rAB__AsymmetryIndicator; } const RAB__AsymmetryIndicator_template& RAB__Parameters_template::rAB__AsymmetryIndicator() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAB_AsymmetryIndicator of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_rAB__AsymmetryIndicator; } RAB__Parameter__MaxBitrateList_template& RAB__Parameters_template::maxBitrate() { set_specific(); return single_value->field_maxBitrate; } const RAB__Parameter__MaxBitrateList_template& RAB__Parameters_template::maxBitrate() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maxBitrate of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_maxBitrate; } RAB__Parameter__GuaranteedBitrateList_template& RAB__Parameters_template::guaranteedBitRate() { set_specific(); return single_value->field_guaranteedBitRate; } const RAB__Parameter__GuaranteedBitrateList_template& RAB__Parameters_template::guaranteedBitRate() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field guaranteedBitRate of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_guaranteedBitRate; } DeliveryOrder_template& RAB__Parameters_template::deliveryOrder() { set_specific(); return single_value->field_deliveryOrder; } const DeliveryOrder_template& RAB__Parameters_template::deliveryOrder() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deliveryOrder of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_deliveryOrder; } INTEGER_template& RAB__Parameters_template::maxSDU__Size() { set_specific(); return single_value->field_maxSDU__Size; } const INTEGER_template& RAB__Parameters_template::maxSDU__Size() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maxSDU_Size of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_maxSDU__Size; } SDU__Parameters_template& RAB__Parameters_template::sDU__Parameters() { set_specific(); return single_value->field_sDU__Parameters; } const SDU__Parameters_template& RAB__Parameters_template::sDU__Parameters() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sDU_Parameters of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_sDU__Parameters; } INTEGER_template& RAB__Parameters_template::transferDelay() { set_specific(); return single_value->field_transferDelay; } const INTEGER_template& RAB__Parameters_template::transferDelay() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field transferDelay of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_transferDelay; } INTEGER_template& RAB__Parameters_template::trafficHandlingPriority() { set_specific(); return single_value->field_trafficHandlingPriority; } const INTEGER_template& RAB__Parameters_template::trafficHandlingPriority() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field trafficHandlingPriority of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_trafficHandlingPriority; } AllocationOrRetentionPriority_template& RAB__Parameters_template::allocationOrRetentionPriority() { set_specific(); return single_value->field_allocationOrRetentionPriority; } const AllocationOrRetentionPriority_template& RAB__Parameters_template::allocationOrRetentionPriority() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field allocationOrRetentionPriority of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_allocationOrRetentionPriority; } SourceStatisticsDescriptor_template& RAB__Parameters_template::sourceStatisticsDescriptor() { set_specific(); return single_value->field_sourceStatisticsDescriptor; } const SourceStatisticsDescriptor_template& RAB__Parameters_template::sourceStatisticsDescriptor() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sourceStatisticsDescriptor of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_sourceStatisticsDescriptor; } RelocationRequirement_template& RAB__Parameters_template::relocationRequirement() { set_specific(); return single_value->field_relocationRequirement; } const RelocationRequirement_template& RAB__Parameters_template::relocationRequirement() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field relocationRequirement of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_relocationRequirement; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& RAB__Parameters_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& RAB__Parameters_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.RAB-Parameters."); return single_value->field_iE__Extensions; } int RAB__Parameters_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 6; if (single_value->field_guaranteedBitRate.is_present()) ret_val++; if (single_value->field_transferDelay.is_present()) ret_val++; if (single_value->field_trafficHandlingPriority.is_present()) ret_val++; if (single_value->field_allocationOrRetentionPriority.is_present()) ret_val++; if (single_value->field_sourceStatisticsDescriptor.is_present()) ret_val++; if (single_value->field_relocationRequirement.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAB-Parameters containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.RAB-Parameters."); } return 0; } void RAB__Parameters_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ trafficClass := "); single_value->field_trafficClass.log(); TTCN_Logger::log_event_str(", rAB_AsymmetryIndicator := "); single_value->field_rAB__AsymmetryIndicator.log(); TTCN_Logger::log_event_str(", maxBitrate := "); single_value->field_maxBitrate.log(); TTCN_Logger::log_event_str(", guaranteedBitRate := "); single_value->field_guaranteedBitRate.log(); TTCN_Logger::log_event_str(", deliveryOrder := "); single_value->field_deliveryOrder.log(); TTCN_Logger::log_event_str(", maxSDU_Size := "); single_value->field_maxSDU__Size.log(); TTCN_Logger::log_event_str(", sDU_Parameters := "); single_value->field_sDU__Parameters.log(); TTCN_Logger::log_event_str(", transferDelay := "); single_value->field_transferDelay.log(); TTCN_Logger::log_event_str(", trafficHandlingPriority := "); single_value->field_trafficHandlingPriority.log(); TTCN_Logger::log_event_str(", allocationOrRetentionPriority := "); single_value->field_allocationOrRetentionPriority.log(); TTCN_Logger::log_event_str(", sourceStatisticsDescriptor := "); single_value->field_sourceStatisticsDescriptor.log(); TTCN_Logger::log_event_str(", relocationRequirement := "); single_value->field_relocationRequirement.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void RAB__Parameters_template::log_match(const RAB__Parameters& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_trafficClass.match(match_value.trafficClass(), legacy)){ TTCN_Logger::log_logmatch_info(".trafficClass"); single_value->field_trafficClass.log_match(match_value.trafficClass(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_rAB__AsymmetryIndicator.match(match_value.rAB__AsymmetryIndicator(), legacy)){ TTCN_Logger::log_logmatch_info(".rAB_AsymmetryIndicator"); single_value->field_rAB__AsymmetryIndicator.log_match(match_value.rAB__AsymmetryIndicator(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_maxBitrate.match(match_value.maxBitrate(), legacy)){ TTCN_Logger::log_logmatch_info(".maxBitrate"); single_value->field_maxBitrate.log_match(match_value.maxBitrate(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.guaranteedBitRate().ispresent()){ if(!single_value->field_guaranteedBitRate.match(match_value.guaranteedBitRate(), legacy)){ TTCN_Logger::log_logmatch_info(".guaranteedBitRate"); single_value->field_guaranteedBitRate.log_match(match_value.guaranteedBitRate(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_guaranteedBitRate.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".guaranteedBitRate := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_guaranteedBitRate.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if(!single_value->field_deliveryOrder.match(match_value.deliveryOrder(), legacy)){ TTCN_Logger::log_logmatch_info(".deliveryOrder"); single_value->field_deliveryOrder.log_match(match_value.deliveryOrder(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_maxSDU__Size.match(match_value.maxSDU__Size(), legacy)){ TTCN_Logger::log_logmatch_info(".maxSDU_Size"); single_value->field_maxSDU__Size.log_match(match_value.maxSDU__Size(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_sDU__Parameters.match(match_value.sDU__Parameters(), legacy)){ TTCN_Logger::log_logmatch_info(".sDU_Parameters"); single_value->field_sDU__Parameters.log_match(match_value.sDU__Parameters(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.transferDelay().ispresent()){ if(!single_value->field_transferDelay.match(match_value.transferDelay(), legacy)){ TTCN_Logger::log_logmatch_info(".transferDelay"); single_value->field_transferDelay.log_match(match_value.transferDelay(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_transferDelay.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".transferDelay := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_transferDelay.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.trafficHandlingPriority().ispresent()){ if(!single_value->field_trafficHandlingPriority.match(match_value.trafficHandlingPriority(), legacy)){ TTCN_Logger::log_logmatch_info(".trafficHandlingPriority"); single_value->field_trafficHandlingPriority.log_match(match_value.trafficHandlingPriority(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_trafficHandlingPriority.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".trafficHandlingPriority := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_trafficHandlingPriority.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.allocationOrRetentionPriority().ispresent()){ if(!single_value->field_allocationOrRetentionPriority.match(match_value.allocationOrRetentionPriority(), legacy)){ TTCN_Logger::log_logmatch_info(".allocationOrRetentionPriority"); single_value->field_allocationOrRetentionPriority.log_match(match_value.allocationOrRetentionPriority(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_allocationOrRetentionPriority.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".allocationOrRetentionPriority := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_allocationOrRetentionPriority.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.sourceStatisticsDescriptor().ispresent()){ if(!single_value->field_sourceStatisticsDescriptor.match(match_value.sourceStatisticsDescriptor(), legacy)){ TTCN_Logger::log_logmatch_info(".sourceStatisticsDescriptor"); single_value->field_sourceStatisticsDescriptor.log_match(match_value.sourceStatisticsDescriptor(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_sourceStatisticsDescriptor.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".sourceStatisticsDescriptor := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_sourceStatisticsDescriptor.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.relocationRequirement().ispresent()){ if(!single_value->field_relocationRequirement.match(match_value.relocationRequirement(), legacy)){ TTCN_Logger::log_logmatch_info(".relocationRequirement"); single_value->field_relocationRequirement.log_match(match_value.relocationRequirement(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_relocationRequirement.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".relocationRequirement := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_relocationRequirement.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ trafficClass := "); single_value->field_trafficClass.log_match(match_value.trafficClass(), legacy); TTCN_Logger::log_event_str(", rAB_AsymmetryIndicator := "); single_value->field_rAB__AsymmetryIndicator.log_match(match_value.rAB__AsymmetryIndicator(), legacy); TTCN_Logger::log_event_str(", maxBitrate := "); single_value->field_maxBitrate.log_match(match_value.maxBitrate(), legacy); TTCN_Logger::log_event_str(", guaranteedBitRate := "); if (match_value.guaranteedBitRate().ispresent()) { single_value->field_guaranteedBitRate.log_match(match_value.guaranteedBitRate(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_guaranteedBitRate.log(); if (single_value->field_guaranteedBitRate.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", deliveryOrder := "); single_value->field_deliveryOrder.log_match(match_value.deliveryOrder(), legacy); TTCN_Logger::log_event_str(", maxSDU_Size := "); single_value->field_maxSDU__Size.log_match(match_value.maxSDU__Size(), legacy); TTCN_Logger::log_event_str(", sDU_Parameters := "); single_value->field_sDU__Parameters.log_match(match_value.sDU__Parameters(), legacy); TTCN_Logger::log_event_str(", transferDelay := "); if (match_value.transferDelay().ispresent()) { single_value->field_transferDelay.log_match(match_value.transferDelay(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_transferDelay.log(); if (single_value->field_transferDelay.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", trafficHandlingPriority := "); if (match_value.trafficHandlingPriority().ispresent()) { single_value->field_trafficHandlingPriority.log_match(match_value.trafficHandlingPriority(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_trafficHandlingPriority.log(); if (single_value->field_trafficHandlingPriority.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", allocationOrRetentionPriority := "); if (match_value.allocationOrRetentionPriority().ispresent()) { single_value->field_allocationOrRetentionPriority.log_match(match_value.allocationOrRetentionPriority(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_allocationOrRetentionPriority.log(); if (single_value->field_allocationOrRetentionPriority.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", sourceStatisticsDescriptor := "); if (match_value.sourceStatisticsDescriptor().ispresent()) { single_value->field_sourceStatisticsDescriptor.log_match(match_value.sourceStatisticsDescriptor(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_sourceStatisticsDescriptor.log(); if (single_value->field_sourceStatisticsDescriptor.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", relocationRequirement := "); if (match_value.relocationRequirement().ispresent()) { single_value->field_relocationRequirement.log_match(match_value.relocationRequirement(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_relocationRequirement.log(); if (single_value->field_relocationRequirement.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RAB__Parameters_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (trafficClass().is_bound()) trafficClass().set_implicit_omit(); if (rAB__AsymmetryIndicator().is_bound()) rAB__AsymmetryIndicator().set_implicit_omit(); if (maxBitrate().is_bound()) maxBitrate().set_implicit_omit(); if (!guaranteedBitRate().is_bound()) guaranteedBitRate() = OMIT_VALUE; else guaranteedBitRate().set_implicit_omit(); if (deliveryOrder().is_bound()) deliveryOrder().set_implicit_omit(); if (maxSDU__Size().is_bound()) maxSDU__Size().set_implicit_omit(); if (sDU__Parameters().is_bound()) sDU__Parameters().set_implicit_omit(); if (!transferDelay().is_bound()) transferDelay() = OMIT_VALUE; else transferDelay().set_implicit_omit(); if (!trafficHandlingPriority().is_bound()) trafficHandlingPriority() = OMIT_VALUE; else trafficHandlingPriority().set_implicit_omit(); if (!allocationOrRetentionPriority().is_bound()) allocationOrRetentionPriority() = OMIT_VALUE; else allocationOrRetentionPriority().set_implicit_omit(); if (!sourceStatisticsDescriptor().is_bound()) sourceStatisticsDescriptor() = OMIT_VALUE; else sourceStatisticsDescriptor().set_implicit_omit(); if (!relocationRequirement().is_bound()) relocationRequirement() = OMIT_VALUE; else relocationRequirement().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RAB__Parameters_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_trafficClass.encode_text(text_buf); single_value->field_rAB__AsymmetryIndicator.encode_text(text_buf); single_value->field_maxBitrate.encode_text(text_buf); single_value->field_guaranteedBitRate.encode_text(text_buf); single_value->field_deliveryOrder.encode_text(text_buf); single_value->field_maxSDU__Size.encode_text(text_buf); single_value->field_sDU__Parameters.encode_text(text_buf); single_value->field_transferDelay.encode_text(text_buf); single_value->field_trafficHandlingPriority.encode_text(text_buf); single_value->field_allocationOrRetentionPriority.encode_text(text_buf); single_value->field_sourceStatisticsDescriptor.encode_text(text_buf); single_value->field_relocationRequirement.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.RAB-Parameters."); } } void RAB__Parameters_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_trafficClass.decode_text(text_buf); single_value->field_rAB__AsymmetryIndicator.decode_text(text_buf); single_value->field_maxBitrate.decode_text(text_buf); single_value->field_guaranteedBitRate.decode_text(text_buf); single_value->field_deliveryOrder.decode_text(text_buf); single_value->field_maxSDU__Size.decode_text(text_buf); single_value->field_sDU__Parameters.decode_text(text_buf); single_value->field_transferDelay.decode_text(text_buf); single_value->field_trafficHandlingPriority.decode_text(text_buf); single_value->field_allocationOrRetentionPriority.decode_text(text_buf); single_value->field_sourceStatisticsDescriptor.decode_text(text_buf); single_value->field_relocationRequirement.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RAB__Parameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.RAB-Parameters."); } } void RAB__Parameters_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RAB__Parameters_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) trafficClass().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAB__AsymmetryIndicator().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) maxBitrate().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) guaranteedBitRate().set_param(*param.get_elem(3)); if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) deliveryOrder().set_param(*param.get_elem(4)); if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) maxSDU__Size().set_param(*param.get_elem(5)); if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) sDU__Parameters().set_param(*param.get_elem(6)); if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) transferDelay().set_param(*param.get_elem(7)); if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) trafficHandlingPriority().set_param(*param.get_elem(8)); if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) allocationOrRetentionPriority().set_param(*param.get_elem(9)); if (param.get_size()>10 && param.get_elem(10)->get_type()!=Module_Param::MP_NotUsed) sourceStatisticsDescriptor().set_param(*param.get_elem(10)); if (param.get_size()>11 && param.get_elem(11)->get_type()!=Module_Param::MP_NotUsed) relocationRequirement().set_param(*param.get_elem(11)); if (param.get_size()>12 && param.get_elem(12)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(12)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "trafficClass")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trafficClass().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAB_AsymmetryIndicator")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAB__AsymmetryIndicator().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "maxBitrate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { maxBitrate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "guaranteedBitRate")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { guaranteedBitRate().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "deliveryOrder")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { deliveryOrder().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "maxSDU_Size")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { maxSDU__Size().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sDU_Parameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sDU__Parameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "transferDelay")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { transferDelay().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "trafficHandlingPriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { trafficHandlingPriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "allocationOrRetentionPriority")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { allocationOrRetentionPriority().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "sourceStatisticsDescriptor")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { sourceStatisticsDescriptor().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "relocationRequirement")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { relocationRequirement().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RAB-Parameters: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RAB__Parameters_template* precondition = new RAB__Parameters_template; precondition->set_param(*param.get_elem(0)); RAB__Parameters_template* implied_template = new RAB__Parameters_template; implied_template->set_param(*param.get_elem(1)); *this = RAB__Parameters_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.RAB-Parameters"); } is_ifpresent = param.get_ifpresent(); } void RAB__Parameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_trafficClass.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_rAB__AsymmetryIndicator.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_maxBitrate.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_guaranteedBitRate.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_deliveryOrder.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_maxSDU__Size.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_sDU__Parameters.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_transferDelay.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_trafficHandlingPriority.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_allocationOrRetentionPriority.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_sourceStatisticsDescriptor.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_relocationRequirement.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RAB-Parameters"); } boolean RAB__Parameters_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RAB__Parameters_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.SourceStatisticsDescriptor comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean SourceStatisticsDescriptor::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return enum_value > other_value; } boolean SourceStatisticsDescriptor::operator>(const SourceStatisticsDescriptor& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return enum_value > other_value.enum_value; } const char *SourceStatisticsDescriptor::enum_to_str(enum_type enum_par) { switch (enum_par) { case speech: return "speech"; case unknown: return "unknown"; default: return ""; } } SourceStatisticsDescriptor::enum_type SourceStatisticsDescriptor::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "speech")) return speech; if (!strcmp(str_par, "unknown")) return unknown; } return UNKNOWN_VALUE; } boolean SourceStatisticsDescriptor::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: return TRUE; default: return FALSE; } } int SourceStatisticsDescriptor::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int SourceStatisticsDescriptor::enum2int(const SourceStatisticsDescriptor& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void SourceStatisticsDescriptor::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", int_val); enum_value = (enum_type)int_val; } SourceStatisticsDescriptor::operator SourceStatisticsDescriptor::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return enum_value; } void SourceStatisticsDescriptor::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void SourceStatisticsDescriptor::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.SourceStatisticsDescriptor"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.SourceStatisticsDescriptor."); } } void SourceStatisticsDescriptor::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); text_buf.push_int(enum_value); } void SourceStatisticsDescriptor::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", enum_value); } void SourceStatisticsDescriptor::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SourceStatisticsDescriptor::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SourceStatisticsDescriptor::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SourceStatisticsDescriptor::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.SourceStatisticsDescriptor: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int SourceStatisticsDescriptor::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int SourceStatisticsDescriptor::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = speech; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int SourceStatisticsDescriptor::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int SourceStatisticsDescriptor::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void SourceStatisticsDescriptor::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case speech: enc_val = 0; ext_bit = FALSE; break; case unknown: enc_val = 1; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 1); } void SourceStatisticsDescriptor::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = speech; break; case 1: enum_value = unknown; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", dec_int); break; } } void SourceStatisticsDescriptor_template::copy_template(const SourceStatisticsDescriptor_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SourceStatisticsDescriptor_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SourceStatisticsDescriptor_template(*other_value.implication_.precondition); implication_.implied_template = new SourceStatisticsDescriptor_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template() { } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!SourceStatisticsDescriptor::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor with unknown numeric value %d.", other_value); single_value = (SourceStatisticsDescriptor::enum_type)other_value; } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(SourceStatisticsDescriptor::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(const SourceStatisticsDescriptor& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == SourceStatisticsDescriptor::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); single_value = other_value.enum_value; } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SourceStatisticsDescriptor::enum_type)(const SourceStatisticsDescriptor&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor from an unbound optional field."); } } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(SourceStatisticsDescriptor_template* p_precondition, SourceStatisticsDescriptor_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SourceStatisticsDescriptor_template::SourceStatisticsDescriptor_template(const SourceStatisticsDescriptor_template& other_value) : Base_Template() { copy_template(other_value); } SourceStatisticsDescriptor_template::~SourceStatisticsDescriptor_template() { clean_up(); } boolean SourceStatisticsDescriptor_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean SourceStatisticsDescriptor_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != SourceStatisticsDescriptor::UNBOUND_VALUE; } void SourceStatisticsDescriptor_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(int other_value) { if (!SourceStatisticsDescriptor::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (SourceStatisticsDescriptor::enum_type)other_value; return *this; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(SourceStatisticsDescriptor::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(const SourceStatisticsDescriptor& other_value) { if (other_value.enum_value == SourceStatisticsDescriptor::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.SourceStatisticsDescriptor to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SourceStatisticsDescriptor::enum_type)(const SourceStatisticsDescriptor&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } return *this; } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::operator=(const SourceStatisticsDescriptor_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SourceStatisticsDescriptor_template::match(SourceStatisticsDescriptor::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } return FALSE; } boolean SourceStatisticsDescriptor_template::match(const SourceStatisticsDescriptor& other_value, boolean) const { if (other_value.enum_value == SourceStatisticsDescriptor::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor with an unbound value."); return match(other_value.enum_value); } SourceStatisticsDescriptor::enum_type SourceStatisticsDescriptor_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return single_value; } void SourceStatisticsDescriptor_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SourceStatisticsDescriptor_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } } SourceStatisticsDescriptor_template& SourceStatisticsDescriptor_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); return value_list.list_value[list_index]; } void SourceStatisticsDescriptor_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(SourceStatisticsDescriptor::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void SourceStatisticsDescriptor_template::log_match(const SourceStatisticsDescriptor& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void SourceStatisticsDescriptor_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } } void SourceStatisticsDescriptor_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (SourceStatisticsDescriptor::enum_type)text_buf.pull_int().get_val(); if (!SourceStatisticsDescriptor::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SourceStatisticsDescriptor_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.SourceStatisticsDescriptor."); } } boolean SourceStatisticsDescriptor_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SourceStatisticsDescriptor_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SourceStatisticsDescriptor_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { SourceStatisticsDescriptor::enum_type enum_val = SourceStatisticsDescriptor::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!SourceStatisticsDescriptor::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.SourceStatisticsDescriptor."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { SourceStatisticsDescriptor_template* precondition = new SourceStatisticsDescriptor_template; precondition->set_param(*m_p->get_elem(0)); SourceStatisticsDescriptor_template* implied_template = new SourceStatisticsDescriptor_template; implied_template->set_param(*m_p->get_elem(1)); *this = SourceStatisticsDescriptor_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.SourceStatisticsDescriptor"); } is_ifpresent = param.get_ifpresent(); } void SourceStatisticsDescriptor_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SourceStatisticsDescriptor"); } RelocationRequirement::RelocationRequirement() { enum_value = UNBOUND_VALUE; } RelocationRequirement::RelocationRequirement(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.RelocationRequirement with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } RelocationRequirement::RelocationRequirement(enum_type other_value) { enum_value = other_value; } RelocationRequirement::RelocationRequirement(const RelocationRequirement& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); enum_value = other_value.enum_value; } RelocationRequirement& RelocationRequirement::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.RelocationRequirement.", other_value); enum_value = (enum_type)other_value; return *this; } RelocationRequirement& RelocationRequirement::operator=(enum_type other_value) { enum_value = other_value; return *this; } RelocationRequirement& RelocationRequirement::operator=(const RelocationRequirement& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); enum_value = other_value.enum_value; return *this; } boolean RelocationRequirement::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RelocationRequirement comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean RelocationRequirement::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value == other_value; } boolean RelocationRequirement::operator==(const RelocationRequirement& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value == other_value.enum_value; } boolean RelocationRequirement::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RelocationRequirement comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean RelocationRequirement::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value < other_value; } boolean RelocationRequirement::operator<(const RelocationRequirement& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value < other_value.enum_value; } boolean RelocationRequirement::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.RelocationRequirement comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean RelocationRequirement::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value > other_value; } boolean RelocationRequirement::operator>(const RelocationRequirement& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value > other_value.enum_value; } const char *RelocationRequirement::enum_to_str(enum_type enum_par) { switch (enum_par) { case lossless: return "lossless"; case none__: return "none_"; case realtime: return "realtime"; default: return ""; } } RelocationRequirement::enum_type RelocationRequirement::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "lossless")) return lossless; if (!strcmp(str_par, "none_")) return none__; if (!strcmp(str_par, "realtime")) return realtime; } return UNKNOWN_VALUE; } boolean RelocationRequirement::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: return TRUE; default: return FALSE; } } int RelocationRequirement::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.RelocationRequirement.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int RelocationRequirement::enum2int(const RelocationRequirement& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.RelocationRequirement.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void RelocationRequirement::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.RelocationRequirement.", int_val); enum_value = (enum_type)int_val; } RelocationRequirement::operator RelocationRequirement::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.RelocationRequirement."); return enum_value; } void RelocationRequirement::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void RelocationRequirement::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.RelocationRequirement"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.RelocationRequirement."); } } void RelocationRequirement::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); text_buf.push_int(enum_value); } void RelocationRequirement::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.RelocationRequirement.", enum_value); } void RelocationRequirement::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RelocationRequirement::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RelocationRequirement::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RelocationRequirement::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.RelocationRequirement: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int RelocationRequirement::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int RelocationRequirement::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = lossless; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int RelocationRequirement::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int RelocationRequirement::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void RelocationRequirement::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case lossless: enc_val = 0; ext_bit = FALSE; break; case none__: enc_val = 1; ext_bit = FALSE; break; case realtime: enc_val = 0; ext_bit = TRUE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.RelocationRequirement."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 1); } void RelocationRequirement::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 1, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { case 0: enum_value = realtime; break; default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = lossless; break; case 1: enum_value = none__; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.RelocationRequirement.", dec_int); break; } } void RelocationRequirement_template::copy_template(const RelocationRequirement_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RelocationRequirement_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RelocationRequirement_template(*other_value.implication_.precondition); implication_.implied_template = new RelocationRequirement_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.RelocationRequirement."); } } RelocationRequirement_template::RelocationRequirement_template() { } RelocationRequirement_template::RelocationRequirement_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RelocationRequirement_template::RelocationRequirement_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!RelocationRequirement::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.RelocationRequirement with unknown numeric value %d.", other_value); single_value = (RelocationRequirement::enum_type)other_value; } RelocationRequirement_template::RelocationRequirement_template(RelocationRequirement::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } RelocationRequirement_template::RelocationRequirement_template(const RelocationRequirement& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == RelocationRequirement::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.RelocationRequirement."); single_value = other_value.enum_value; } RelocationRequirement_template::RelocationRequirement_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (RelocationRequirement::enum_type)(const RelocationRequirement&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.RelocationRequirement from an unbound optional field."); } } RelocationRequirement_template::RelocationRequirement_template(RelocationRequirement_template* p_precondition, RelocationRequirement_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RelocationRequirement_template::RelocationRequirement_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RelocationRequirement_template::RelocationRequirement_template(const RelocationRequirement_template& other_value) : Base_Template() { copy_template(other_value); } RelocationRequirement_template::~RelocationRequirement_template() { clean_up(); } boolean RelocationRequirement_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean RelocationRequirement_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != RelocationRequirement::UNBOUND_VALUE; } void RelocationRequirement_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RelocationRequirement_template& RelocationRequirement_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RelocationRequirement_template& RelocationRequirement_template::operator=(int other_value) { if (!RelocationRequirement::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.RelocationRequirement.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (RelocationRequirement::enum_type)other_value; return *this; } RelocationRequirement_template& RelocationRequirement_template::operator=(RelocationRequirement::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } RelocationRequirement_template& RelocationRequirement_template::operator=(const RelocationRequirement& other_value) { if (other_value.enum_value == RelocationRequirement::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.RelocationRequirement to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } RelocationRequirement_template& RelocationRequirement_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (RelocationRequirement::enum_type)(const RelocationRequirement&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.RelocationRequirement."); } return *this; } RelocationRequirement_template& RelocationRequirement_template::operator=(const RelocationRequirement_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RelocationRequirement_template::match(RelocationRequirement::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.RelocationRequirement."); } return FALSE; } boolean RelocationRequirement_template::match(const RelocationRequirement& other_value, boolean) const { if (other_value.enum_value == RelocationRequirement::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.RelocationRequirement with an unbound value."); return match(other_value.enum_value); } RelocationRequirement::enum_type RelocationRequirement_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.RelocationRequirement."); return single_value; } void RelocationRequirement_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RelocationRequirement_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.RelocationRequirement."); } } RelocationRequirement_template& RelocationRequirement_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.RelocationRequirement."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.RelocationRequirement."); return value_list.list_value[list_index]; } void RelocationRequirement_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(RelocationRequirement::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void RelocationRequirement_template::log_match(const RelocationRequirement& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void RelocationRequirement_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.RelocationRequirement."); } } void RelocationRequirement_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (RelocationRequirement::enum_type)text_buf.pull_int().get_val(); if (!RelocationRequirement::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.RelocationRequirement.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RelocationRequirement_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.RelocationRequirement."); } } boolean RelocationRequirement_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RelocationRequirement_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RelocationRequirement_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { RelocationRequirement::enum_type enum_val = RelocationRequirement::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!RelocationRequirement::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.RelocationRequirement."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { RelocationRequirement_template* precondition = new RelocationRequirement_template; precondition->set_param(*m_p->get_elem(0)); RelocationRequirement_template* implied_template = new RelocationRequirement_template; implied_template->set_param(*m_p->get_elem(1)); *this = RelocationRequirement_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.RelocationRequirement"); } is_ifpresent = param.get_ifpresent(); } void RelocationRequirement_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RelocationRequirement"); } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::UNBOUND_ELEM; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9() { val_ptr = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst9"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst9_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) { switch (other_value.union_selection) { case ALT_signallingIndication: field_signallingIndication = new SignallingIndication(*other_value.field_signallingIndication); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList(*other_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList(*other_value.field_rAB__Parameter__ExtendedMaxBitrateList); break; case ALT_supportedRAB__ParameterBitrateList: field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList(*other_value.field_supportedRAB__ParameterBitrateList); break; default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { case ALT_signallingIndication: return *field_signallingIndication == *other_value.field_signallingIndication; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: return *field_rAB__Parameter__ExtendedGuaranteedBitrateList == *other_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList; case ALT_rAB__Parameter__ExtendedMaxBitrateList: return *field_rAB__Parameter__ExtendedMaxBitrateList == *other_value.field_rAB__Parameter__ExtendedMaxBitrateList; case ALT_supportedRAB__ParameterBitrateList: return *field_supportedRAB__ParameterBitrateList == *other_value.field_supportedRAB__ParameterBitrateList; default: return FALSE; } } SignallingIndication& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::signallingIndication() { if (union_selection != ALT_signallingIndication) { clean_up(); field_signallingIndication = new SignallingIndication; union_selection = ALT_signallingIndication; } return *field_signallingIndication; } const SignallingIndication& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::signallingIndication() const { if (union_selection != ALT_signallingIndication) TTCN_error("Using non-selected field signallingIndication in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *field_signallingIndication; } RAB__Parameter__ExtendedGuaranteedBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::rAB__Parameter__ExtendedGuaranteedBitrateList() { if (union_selection != ALT_rAB__Parameter__ExtendedGuaranteedBitrateList) { clean_up(); field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList; union_selection = ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; } return *field_rAB__Parameter__ExtendedGuaranteedBitrateList; } const RAB__Parameter__ExtendedGuaranteedBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::rAB__Parameter__ExtendedGuaranteedBitrateList() const { if (union_selection != ALT_rAB__Parameter__ExtendedGuaranteedBitrateList) TTCN_error("Using non-selected field rAB_Parameter_ExtendedGuaranteedBitrateList in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *field_rAB__Parameter__ExtendedGuaranteedBitrateList; } RAB__Parameter__ExtendedMaxBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::rAB__Parameter__ExtendedMaxBitrateList() { if (union_selection != ALT_rAB__Parameter__ExtendedMaxBitrateList) { clean_up(); field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList; union_selection = ALT_rAB__Parameter__ExtendedMaxBitrateList; } return *field_rAB__Parameter__ExtendedMaxBitrateList; } const RAB__Parameter__ExtendedMaxBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::rAB__Parameter__ExtendedMaxBitrateList() const { if (union_selection != ALT_rAB__Parameter__ExtendedMaxBitrateList) TTCN_error("Using non-selected field rAB_Parameter_ExtendedMaxBitrateList in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *field_rAB__Parameter__ExtendedMaxBitrateList; } SupportedRAB__ParameterBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::supportedRAB__ParameterBitrateList() { if (union_selection != ALT_supportedRAB__ParameterBitrateList) { clean_up(); field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; union_selection = ALT_supportedRAB__ParameterBitrateList; } return *field_supportedRAB__ParameterBitrateList; } const SupportedRAB__ParameterBitrateList& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::supportedRAB__ParameterBitrateList() const { if (union_selection != ALT_supportedRAB__ParameterBitrateList) TTCN_error("Using non-selected field supportedRAB_ParameterBitrateList in a value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *field_supportedRAB__ParameterBitrateList; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; case ALT_signallingIndication: return field_signallingIndication->is_value(); case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: return field_rAB__Parameter__ExtendedGuaranteedBitrateList->is_value(); case ALT_rAB__Parameter__ExtendedMaxBitrateList: return field_rAB__Parameter__ExtendedMaxBitrateList->is_value(); case ALT_supportedRAB__ParameterBitrateList: return field_supportedRAB__ParameterBitrateList->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::clean_up() { switch (union_selection) { case ALT_signallingIndication: delete field_signallingIndication; break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: delete field_rAB__Parameter__ExtendedGuaranteedBitrateList; break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: delete field_rAB__Parameter__ExtendedMaxBitrateList; break; case ALT_supportedRAB__ParameterBitrateList: delete field_supportedRAB__ParameterBitrateList; break; default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::log() const { switch (union_selection) { case ALT_signallingIndication: TTCN_Logger::log_event_str("{ signallingIndication := "); field_signallingIndication->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedGuaranteedBitrateList := "); field_rAB__Parameter__ExtendedGuaranteedBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedMaxBitrateList := "); field_rAB__Parameter__ExtendedMaxBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_supportedRAB__ParameterBitrateList: TTCN_Logger::log_event_str("{ supportedRAB_ParameterBitrateList := "); field_supportedRAB__ParameterBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "signallingIndication")) { signallingIndication().set_param(*mp_last); if (!signallingIndication().is_bound()) clean_up(); return; } if (!strcmp(last_name, "rAB_Parameter_ExtendedGuaranteedBitrateList")) { rAB__Parameter__ExtendedGuaranteedBitrateList().set_param(*mp_last); if (!rAB__Parameter__ExtendedGuaranteedBitrateList().is_bound()) clean_up(); return; } if (!strcmp(last_name, "rAB_Parameter_ExtendedMaxBitrateList")) { rAB__Parameter__ExtendedMaxBitrateList().set_param(*mp_last); if (!rAB__Parameter__ExtendedMaxBitrateList().is_bound()) clean_up(); return; } if (!strcmp(last_name, "supportedRAB_ParameterBitrateList")) { supportedRAB__ParameterBitrateList().set_param(*mp_last); if (!supportedRAB__ParameterBitrateList().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::set_implicit_omit() { switch (union_selection) { case ALT_signallingIndication: field_signallingIndication->set_implicit_omit(); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: field_rAB__Parameter__ExtendedGuaranteedBitrateList->set_implicit_omit(); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: field_rAB__Parameter__ExtendedMaxBitrateList->set_implicit_omit(); break; case ALT_supportedRAB__ParameterBitrateList: field_supportedRAB__ParameterBitrateList->set_implicit_omit(); break; default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_signallingIndication: field_signallingIndication->encode_text(text_buf); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: field_rAB__Parameter__ExtendedGuaranteedBitrateList->encode_text(text_buf); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: field_rAB__Parameter__ExtendedMaxBitrateList->encode_text(text_buf); break; case ALT_supportedRAB__ParameterBitrateList: field_supportedRAB__ParameterBitrateList->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_signallingIndication: signallingIndication().decode_text(text_buf); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: rAB__Parameter__ExtendedGuaranteedBitrateList().decode_text(text_buf); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: rAB__Parameter__ExtendedMaxBitrateList().decode_text(text_buf); break; case ALT_supportedRAB__ParameterBitrateList: supportedRAB__ParameterBitrateList().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case ALT_signallingIndication: ec_1.set_msg("signallingIndication': "); new_tlv = field_signallingIndication->BER_encode_TLV(SignallingIndication_descr_, p_coding); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: ec_1.set_msg("rAB_Parameter_ExtendedGuaranteedBitrateList': "); new_tlv = field_rAB__Parameter__ExtendedGuaranteedBitrateList->BER_encode_TLV(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_coding); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: ec_1.set_msg("rAB_Parameter_ExtendedMaxBitrateList': "); new_tlv = field_rAB__Parameter__ExtendedMaxBitrateList->BER_encode_TLV(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_coding); break; case ALT_supportedRAB__ParameterBitrateList: ec_1.set_msg("supportedRAB_ParameterBitrateList': "); new_tlv = field_supportedRAB__ParameterBitrateList->BER_encode_TLV(SupportedRAB__ParameterBitrateList_descr_, p_coding); break; case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); field_signallingIndication = new SignallingIndication; union_selection = ALT_signallingIndication; if (field_signallingIndication->BER_decode_isMyMsg(SignallingIndication_descr_, p_tlv)) return TRUE; delete field_signallingIndication; field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList; union_selection = ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; if (field_rAB__Parameter__ExtendedGuaranteedBitrateList->BER_decode_isMyMsg(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tlv)) return TRUE; delete field_rAB__Parameter__ExtendedGuaranteedBitrateList; field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList; union_selection = ALT_rAB__Parameter__ExtendedMaxBitrateList; if (field_rAB__Parameter__ExtendedMaxBitrateList->BER_decode_isMyMsg(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tlv)) return TRUE; delete field_rAB__Parameter__ExtendedMaxBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; union_selection = ALT_supportedRAB__ParameterBitrateList; if (field_supportedRAB__ParameterBitrateList->BER_decode_isMyMsg(SupportedRAB__ParameterBitrateList_descr_, p_tlv)) return TRUE; delete field_supportedRAB__ParameterBitrateList; union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_signallingIndication; field_signallingIndication = new SignallingIndication; ec_2.set_msg("signallingIndication': "); field_signallingIndication->BER_decode_TLV(SignallingIndication_descr_, tlv_opentype, L_form); } else if (f_1 == RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedGuaranteedBitrateList': "); field_rAB__Parameter__ExtendedGuaranteedBitrateList->BER_decode_TLV(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, tlv_opentype, L_form); } else if (f_1 == RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_rAB__Parameter__ExtendedMaxBitrateList; field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedMaxBitrateList': "); field_rAB__Parameter__ExtendedMaxBitrateList->BER_decode_TLV(RAB__Parameter__ExtendedMaxBitrateList_descr_, tlv_opentype, L_form); } else if (f_1 == RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); field_supportedRAB__ParameterBitrateList->BER_decode_TLV(SupportedRAB__ParameterBitrateList_descr_, tlv_opentype, L_form); } else if (f_1 == RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); field_supportedRAB__ParameterBitrateList->BER_decode_TLV(SupportedRAB__ParameterBitrateList_descr_, tlv_opentype, L_form); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { boolean as_value = p_td.json->as_value; int enc_len = as_value ? 0 : p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); switch(union_selection) { case ALT_signallingIndication: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "signallingIndication"); } enc_len += field_signallingIndication->JSON_encode(SignallingIndication_descr_, p_tok, FALSE); break; case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAB_Parameter_ExtendedGuaranteedBitrateList"); } enc_len += field_rAB__Parameter__ExtendedGuaranteedBitrateList->JSON_encode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tok, FALSE); break; case ALT_rAB__Parameter__ExtendedMaxBitrateList: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAB_Parameter_ExtendedMaxBitrateList"); } enc_len += field_rAB__Parameter__ExtendedMaxBitrateList->JSON_encode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tok, FALSE); break; case ALT_supportedRAB__ParameterBitrateList: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "supportedRAB_ParameterBitrateList"); } enc_len += field_supportedRAB__ParameterBitrateList->JSON_encode(SupportedRAB__ParameterBitrateList_descr_, p_tok, FALSE); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return -1; } if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { if (0 <= p_chosen_field && 4 > p_chosen_field) { switch (p_chosen_field) { case 0: return signallingIndication().JSON_decode(SignallingIndication_descr_, p_tok, TRUE, FALSE); case 1: return rAB__Parameter__ExtendedGuaranteedBitrateList().JSON_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tok, TRUE, FALSE); case 2: return rAB__Parameter__ExtendedMaxBitrateList().JSON_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tok, TRUE, FALSE); case 3: return supportedRAB__ParameterBitrateList().JSON_decode(SupportedRAB__ParameterBitrateList_descr_, p_tok, TRUE, FALSE); } } if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; if (p_td.json->as_value) { size_t buf_pos = p_tok.get_buf_pos(); p_tok.get_next_token(&j_token, NULL, NULL); int ret_val = 0; switch(j_token) { case JSON_TOKEN_NUMBER: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "number '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_STRING: { p_tok.set_buf_pos(buf_pos); ret_val = signallingIndication().JSON_decode(SignallingIndication_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "string '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_TRUE: case JSON_TOKEN_LITERAL_FALSE: { char* literal_str = mprintf("literal (%s)", (JSON_TOKEN_LITERAL_TRUE == j_token) ? "true" : "false"); try { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, literal_str); } catch (const TC_Error&) { Free(literal_str); throw; } Free(literal_str); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_ARRAY_START: { p_tok.set_buf_pos(buf_pos); ret_val = rAB__Parameter__ExtendedGuaranteedBitrateList().JSON_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = rAB__Parameter__ExtendedMaxBitrateList().JSON_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = supportedRAB__ParameterBitrateList().JSON_decode(SupportedRAB__ParameterBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "array '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_OBJECT_START: { p_tok.set_buf_pos(buf_pos); ret_val = rAB__Parameter__ExtendedGuaranteedBitrateList().JSON_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = rAB__Parameter__ExtendedMaxBitrateList().JSON_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = supportedRAB__ParameterBitrateList().JSON_decode(SupportedRAB__ParameterBitrateList_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "object '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_NULL: { clean_up(); return JSON_ERROR_INVALID_TOKEN; } case JSON_TOKEN_ERROR: JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; default: return JSON_ERROR_INVALID_TOKEN; } return ret_val; } else { size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } char* fld_name = 0; size_t name_len = 0; dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_NAME != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else { if (20 == name_len && 0 == strncmp(fld_name, "signallingIndication", name_len)) { int ret_val = signallingIndication().JSON_decode(SignallingIndication_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 20, "signallingIndication"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (43 == name_len && 0 == strncmp(fld_name, "rAB_Parameter_ExtendedGuaranteedBitrateList", name_len)) { int ret_val = rAB__Parameter__ExtendedGuaranteedBitrateList().JSON_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 43, "rAB_Parameter_ExtendedGuaranteedBitrateList"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (36 == name_len && 0 == strncmp(fld_name, "rAB_Parameter_ExtendedMaxBitrateList", name_len)) { int ret_val = rAB__Parameter__ExtendedMaxBitrateList().JSON_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 36, "rAB_Parameter_ExtendedMaxBitrateList"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (33 == name_len && 0 == strncmp(fld_name, "supportedRAB_ParameterBitrateList", name_len)) { int ret_val = supportedRAB__ParameterBitrateList().JSON_decode(SupportedRAB__ParameterBitrateList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 33, "supportedRAB_ParameterBitrateList"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_STATIC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } return (int)dec_len; } } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { case ALT_signallingIndication: { TTCN_Buffer buf; field_signallingIndication->OER_encode(SignallingIndication_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: { TTCN_Buffer buf; field_rAB__Parameter__ExtendedGuaranteedBitrateList->OER_encode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_rAB__Parameter__ExtendedMaxBitrateList: { TTCN_Buffer buf; field_rAB__Parameter__ExtendedMaxBitrateList->OER_encode(RAB__Parameter__ExtendedMaxBitrateList_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } case ALT_supportedRAB__ParameterBitrateList: { TTCN_Buffer buf; field_supportedRAB__ParameterBitrateList->OER_encode(SupportedRAB__ParameterBitrateList_descr_, buf); encode_oer_length(buf.get_len(), p_buf, FALSE); p_buf.put_buf(buf); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_signallingIndication; field_signallingIndication = new SignallingIndication; ec_2.set_msg("signallingIndication': "); size_t pos_1 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_1; field_signallingIndication->OER_decode(SignallingIndication_descr_, p_buf, tmp_oer_1); p_buf.set_pos(pos_1); } else if (f_1 == RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedGuaranteedBitrateList': "); size_t pos_2 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_2; field_rAB__Parameter__ExtendedGuaranteedBitrateList->OER_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, p_buf, tmp_oer_2); p_buf.set_pos(pos_2); } else if (f_1 == RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_rAB__Parameter__ExtendedMaxBitrateList; field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedMaxBitrateList': "); size_t pos_3 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_3; field_rAB__Parameter__ExtendedMaxBitrateList->OER_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, p_buf, tmp_oer_3); p_buf.set_pos(pos_3); } else if (f_1 == RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); size_t pos_4 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_4; field_supportedRAB__ParameterBitrateList->OER_decode(SupportedRAB__ParameterBitrateList_descr_, p_buf, tmp_oer_4); p_buf.set_pos(pos_4); } else if (f_1 == RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); size_t pos_5 = p_buf.get_pos(); p_buf.set_pos(p_oer.opentype_poses.at(0)); p_oer.opentype_poses.erase_at(0); OER_struct tmp_oer_5; field_supportedRAB__ParameterBitrateList->OER_decode(SupportedRAB__ParameterBitrateList_descr_, p_buf, tmp_oer_5); p_buf.set_pos(pos_5); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound open type value."); return; } switch (union_selection) { case ALT_signallingIndication: { TTCN_Buffer ot_buf; field_signallingIndication->PER_encode(SignallingIndication_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: { TTCN_Buffer ot_buf; field_rAB__Parameter__ExtendedGuaranteedBitrateList->PER_encode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_rAB__Parameter__ExtendedMaxBitrateList: { TTCN_Buffer ot_buf; field_rAB__Parameter__ExtendedMaxBitrateList->PER_encode(RAB__Parameter__ExtendedMaxBitrateList_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } case ALT_supportedRAB__ParameterBitrateList: { TTCN_Buffer ot_buf; field_supportedRAB__ParameterBitrateList->PER_encode(SupportedRAB__ParameterBitrateList_descr_, ot_buf, p_options); PER_encode_opentype(p_buf, ot_buf, p_options); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Internal error: Invalid CHOICE selection, expected an extension root field."); break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { clean_up(); PER_decode_opentype(p_buf, per_ot_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type': "); const INTEGER& f_1 = static_cast(p_typelist.get_nth(0))->id(); { TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; if (f_1 == RAB__Parameters__ExtIEs_1_id) { union_selection = ALT_signallingIndication; field_signallingIndication = new SignallingIndication; ec_2.set_msg("signallingIndication': "); field_signallingIndication->PER_decode(SignallingIndication_descr_, per_ot_buf, p_options); } else if (f_1 == RAB__Parameters__ExtIEs_2_id) { union_selection = ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedGuaranteedBitrateList': "); field_rAB__Parameter__ExtendedGuaranteedBitrateList->PER_decode(RAB__Parameter__ExtendedGuaranteedBitrateList_descr_, per_ot_buf, p_options); } else if (f_1 == RAB__Parameters__ExtIEs_3_id) { union_selection = ALT_rAB__Parameter__ExtendedMaxBitrateList; field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList; ec_2.set_msg("rAB-Parameter-ExtendedMaxBitrateList': "); field_rAB__Parameter__ExtendedMaxBitrateList->PER_decode(RAB__Parameter__ExtendedMaxBitrateList_descr_, per_ot_buf, p_options); } else if (f_1 == RAB__Parameters__ExtIEs_4_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); field_supportedRAB__ParameterBitrateList->PER_decode(SupportedRAB__ParameterBitrateList_descr_, per_ot_buf, p_options); } else if (f_1 == RAB__Parameters__ExtIEs_5_id) { union_selection = ALT_supportedRAB__ParameterBitrateList; field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList; ec_2.set_msg("supportedRAB-ParameterBitrateList': "); field_supportedRAB__ParameterBitrateList->PER_decode(SupportedRAB__ParameterBitrateList_descr_, per_ot_buf, p_options); } } if (union_selection == UNBOUND_VALUE) { ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: broken component relation constraint."); if (TTCN_EncDec::get_error_behavior(TTCN_EncDec::ET_DEC_OPENTYPE) != TTCN_EncDec::EB_IGNORE) { TTCN_Logger::log_str(TTCN_WARNING, "The value of constraining component:"); TTCN_Logger::begin_event(TTCN_WARNING); TTCN_Logger::log_event_str("Component '@.id': "); f_1.log(); TTCN_Logger::end_event(); } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication = new SignallingIndication_template(other_value.signallingIndication()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList_template(other_value.rAB__Parameter__ExtendedGuaranteedBitrateList()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList_template(other_value.rAB__Parameter__ExtendedMaxBitrateList()); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList_template(other_value.supportedRAB__ParameterBitrateList()); break; default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication = new SignallingIndication_template(*other_value.single_value.field_signallingIndication); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList_template(*other_value.single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList_template(*other_value.single_value.field_rAB__Parameter__ExtendedMaxBitrateList); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList_template(*other_value.single_value.field_supportedRAB__ParameterBitrateList); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: delete single_value.field_signallingIndication; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: delete single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: delete single_value.field_rAB__Parameter__ExtendedMaxBitrateList; break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: delete single_value.field_supportedRAB__ParameterBitrateList; default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: return single_value.field_signallingIndication->match(other_value.signallingIndication(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: return single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->match(other_value.rAB__Parameter__ExtendedGuaranteedBitrateList(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: return single_value.field_rAB__Parameter__ExtendedMaxBitrateList->match(other_value.rAB__Parameter__ExtendedMaxBitrateList(), legacy); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: return single_value.field_supportedRAB__ParameterBitrateList->match(other_value.supportedRAB__ParameterBitrateList(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: return single_value.field_signallingIndication->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: return single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: return single_value.field_rAB__Parameter__ExtendedMaxBitrateList->is_value(); case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: return single_value.field_supportedRAB__ParameterBitrateList->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type ret_val; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: ret_val.signallingIndication() = single_value.field_signallingIndication->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: ret_val.rAB__Parameter__ExtendedGuaranteedBitrateList() = single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: ret_val.rAB__Parameter__ExtendedMaxBitrateList() = single_value.field_rAB__Parameter__ExtendedMaxBitrateList->valueof(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: ret_val.supportedRAB__ParameterBitrateList() = single_value.field_supportedRAB__ParameterBitrateList->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template[list_length]; } SignallingIndication_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::signallingIndication() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_signallingIndication = new SignallingIndication_template(ANY_VALUE); else single_value.field_signallingIndication = new SignallingIndication_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication; set_selection(SPECIFIC_VALUE); } return *single_value.field_signallingIndication; } const SignallingIndication_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::signallingIndication() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field signallingIndication in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication) TTCN_error("Accessing non-selected field signallingIndication in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *single_value.field_signallingIndication; } RAB__Parameter__ExtendedGuaranteedBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::rAB__Parameter__ExtendedGuaranteedBitrateList() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList_template(ANY_VALUE); else single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList; set_selection(SPECIFIC_VALUE); } return *single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList; } const RAB__Parameter__ExtendedGuaranteedBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::rAB__Parameter__ExtendedGuaranteedBitrateList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAB_Parameter_ExtendedGuaranteedBitrateList in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList) TTCN_error("Accessing non-selected field rAB_Parameter_ExtendedGuaranteedBitrateList in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList; } RAB__Parameter__ExtendedMaxBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::rAB__Parameter__ExtendedMaxBitrateList() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList_template(ANY_VALUE); else single_value.field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList; set_selection(SPECIFIC_VALUE); } return *single_value.field_rAB__Parameter__ExtendedMaxBitrateList; } const RAB__Parameter__ExtendedMaxBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::rAB__Parameter__ExtendedMaxBitrateList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAB_Parameter_ExtendedMaxBitrateList in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList) TTCN_error("Accessing non-selected field rAB_Parameter_ExtendedMaxBitrateList in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *single_value.field_rAB__Parameter__ExtendedMaxBitrateList; } SupportedRAB__ParameterBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::supportedRAB__ParameterBitrateList() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList_template(ANY_VALUE); else single_value.field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList_template; single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList; set_selection(SPECIFIC_VALUE); } return *single_value.field_supportedRAB__ParameterBitrateList; } const SupportedRAB__ParameterBitrateList_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::supportedRAB__ParameterBitrateList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field supportedRAB_ParameterBitrateList in a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); if (single_value.union_selection != _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList) TTCN_error("Accessing non-selected field supportedRAB_ParameterBitrateList in a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return *single_value.field_supportedRAB__ParameterBitrateList; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: TTCN_Logger::log_event_str("{ signallingIndication := "); single_value.field_signallingIndication->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedGuaranteedBitrateList := "); single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedMaxBitrateList := "); single_value.field_rAB__Parameter__ExtendedMaxBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: TTCN_Logger::log_event_str("{ supportedRAB_ParameterBitrateList := "); single_value.field_supportedRAB__ParameterBitrateList->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".signallingIndication"); single_value.field_signallingIndication->log_match(match_value.signallingIndication(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ signallingIndication := "); single_value.field_signallingIndication->log_match(match_value.signallingIndication(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".rAB_Parameter_ExtendedGuaranteedBitrateList"); single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->log_match(match_value.rAB__Parameter__ExtendedGuaranteedBitrateList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedGuaranteedBitrateList := "); single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->log_match(match_value.rAB__Parameter__ExtendedGuaranteedBitrateList(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".rAB_Parameter_ExtendedMaxBitrateList"); single_value.field_rAB__Parameter__ExtendedMaxBitrateList->log_match(match_value.rAB__Parameter__ExtendedMaxBitrateList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ rAB_Parameter_ExtendedMaxBitrateList := "); single_value.field_rAB__Parameter__ExtendedMaxBitrateList->log_match(match_value.rAB__Parameter__ExtendedMaxBitrateList(), legacy); TTCN_Logger::log_event_str(" }"); } break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".supportedRAB_ParameterBitrateList"); single_value.field_supportedRAB__ParameterBitrateList->log_match(match_value.supportedRAB__ParameterBitrateList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ supportedRAB_ParameterBitrateList := "); single_value.field_supportedRAB__ParameterBitrateList->log_match(match_value.supportedRAB__ParameterBitrateList(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList->set_implicit_omit(); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList->set_implicit_omit(); break; default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList->encode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication = new SignallingIndication_template; single_value.field_signallingIndication->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList = new RAB__Parameter__ExtendedGuaranteedBitrateList_template; single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList = new RAB__Parameter__ExtendedMaxBitrateList_template; single_value.field_rAB__Parameter__ExtendedMaxBitrateList->decode_text(text_buf); break; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList = new SupportedRAB__ParameterBitrateList_template; single_value.field_supportedRAB__ParameterBitrateList->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'"); } if (strcmp("signallingIndication", param_field) == 0) { signallingIndication().set_param(param); return; } else if (strcmp("rAB_Parameter_ExtendedGuaranteedBitrateList", param_field) == 0) { rAB__Parameter__ExtendedGuaranteedBitrateList().set_param(param); return; } else if (strcmp("rAB_Parameter_ExtendedMaxBitrateList", param_field) == 0) { rAB__Parameter__ExtendedMaxBitrateList().set_param(param); return; } else if (strcmp("supportedRAB_ParameterBitrateList", param_field) == 0) { supportedRAB__ParameterBitrateList().set_param(param); return; } else param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "signallingIndication")) { signallingIndication().set_param(*mp_last); break; } if (!strcmp(last_name, "rAB_Parameter_ExtendedGuaranteedBitrateList")) { rAB__Parameter__ExtendedGuaranteedBitrateList().set_param(*mp_last); break; } if (!strcmp(last_name, "rAB_Parameter_ExtendedMaxBitrateList")) { rAB__Parameter__ExtendedMaxBitrateList().set_param(*mp_last); break; } if (!strcmp(last_name, "supportedRAB_ParameterBitrateList")) { supportedRAB__ParameterBitrateList().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_signallingIndication: single_value.field_signallingIndication->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedGuaranteedBitrateList: single_value.field_rAB__Parameter__ExtendedGuaranteedBitrateList->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_rAB__Parameter__ExtendedMaxBitrateList: single_value.field_rAB__Parameter__ExtendedMaxBitrateList->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); return; case _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type::ALT_supportedRAB__ParameterBitrateList: single_value.field_supportedRAB__ParameterBitrateList->check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8.extensionValue.type"); } SignallingIndication::SignallingIndication() { enum_value = UNBOUND_VALUE; } SignallingIndication::SignallingIndication(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.SignallingIndication with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } SignallingIndication::SignallingIndication(enum_type other_value) { enum_value = other_value; } SignallingIndication::SignallingIndication(const SignallingIndication& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); enum_value = other_value.enum_value; } SignallingIndication& SignallingIndication::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.SignallingIndication.", other_value); enum_value = (enum_type)other_value; return *this; } SignallingIndication& SignallingIndication::operator=(enum_type other_value) { enum_value = other_value; return *this; } SignallingIndication& SignallingIndication::operator=(const SignallingIndication& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); enum_value = other_value.enum_value; return *this; } boolean SignallingIndication::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.SignallingIndication comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean SignallingIndication::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value == other_value; } boolean SignallingIndication::operator==(const SignallingIndication& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value == other_value.enum_value; } boolean SignallingIndication::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.SignallingIndication comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean SignallingIndication::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value < other_value; } boolean SignallingIndication::operator<(const SignallingIndication& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value < other_value.enum_value; } boolean SignallingIndication::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.SignallingIndication comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean SignallingIndication::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value > other_value; } boolean SignallingIndication::operator>(const SignallingIndication& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value > other_value.enum_value; } const char *SignallingIndication::enum_to_str(enum_type enum_par) { switch (enum_par) { case signalling: return "signalling"; default: return ""; } } SignallingIndication::enum_type SignallingIndication::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "signalling")) return signalling; } return UNKNOWN_VALUE; } boolean SignallingIndication::is_valid_enum(int int_par) { switch (int_par) { case 0: return TRUE; default: return FALSE; } } int SignallingIndication::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.SignallingIndication.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int SignallingIndication::enum2int(const SignallingIndication& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.SignallingIndication.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void SignallingIndication::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.SignallingIndication.", int_val); enum_value = (enum_type)int_val; } SignallingIndication::operator SignallingIndication::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.SignallingIndication."); return enum_value; } void SignallingIndication::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void SignallingIndication::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.SignallingIndication"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.SignallingIndication."); } } void SignallingIndication::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); text_buf.push_int(enum_value); } void SignallingIndication::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.SignallingIndication.", enum_value); } void SignallingIndication::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void SignallingIndication::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* SignallingIndication::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean SignallingIndication::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.SignallingIndication: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int SignallingIndication::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int SignallingIndication::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = signalling; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int SignallingIndication::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int SignallingIndication::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void SignallingIndication::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case signalling: enc_val = 0; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.SignallingIndication."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); } void SignallingIndication::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else enum_value = signalling; int dec_int = ext_bit ? (int)dec_val : 0; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } } void SignallingIndication_template::copy_template(const SignallingIndication_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new SignallingIndication_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new SignallingIndication_template(*other_value.implication_.precondition); implication_.implied_template = new SignallingIndication_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.SignallingIndication."); } } SignallingIndication_template::SignallingIndication_template() { } SignallingIndication_template::SignallingIndication_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } SignallingIndication_template::SignallingIndication_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!SignallingIndication::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.SignallingIndication with unknown numeric value %d.", other_value); single_value = (SignallingIndication::enum_type)other_value; } SignallingIndication_template::SignallingIndication_template(SignallingIndication::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } SignallingIndication_template::SignallingIndication_template(const SignallingIndication& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == SignallingIndication::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.SignallingIndication."); single_value = other_value.enum_value; } SignallingIndication_template::SignallingIndication_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SignallingIndication::enum_type)(const SignallingIndication&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.SignallingIndication from an unbound optional field."); } } SignallingIndication_template::SignallingIndication_template(SignallingIndication_template* p_precondition, SignallingIndication_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } SignallingIndication_template::SignallingIndication_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } SignallingIndication_template::SignallingIndication_template(const SignallingIndication_template& other_value) : Base_Template() { copy_template(other_value); } SignallingIndication_template::~SignallingIndication_template() { clean_up(); } boolean SignallingIndication_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean SignallingIndication_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != SignallingIndication::UNBOUND_VALUE; } void SignallingIndication_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } SignallingIndication_template& SignallingIndication_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } SignallingIndication_template& SignallingIndication_template::operator=(int other_value) { if (!SignallingIndication::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.SignallingIndication.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (SignallingIndication::enum_type)other_value; return *this; } SignallingIndication_template& SignallingIndication_template::operator=(SignallingIndication::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } SignallingIndication_template& SignallingIndication_template::operator=(const SignallingIndication& other_value) { if (other_value.enum_value == SignallingIndication::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.SignallingIndication to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } SignallingIndication_template& SignallingIndication_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (SignallingIndication::enum_type)(const SignallingIndication&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.SignallingIndication."); } return *this; } SignallingIndication_template& SignallingIndication_template::operator=(const SignallingIndication_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean SignallingIndication_template::match(SignallingIndication::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.SignallingIndication."); } return FALSE; } boolean SignallingIndication_template::match(const SignallingIndication& other_value, boolean) const { if (other_value.enum_value == SignallingIndication::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.SignallingIndication with an unbound value."); return match(other_value.enum_value); } SignallingIndication::enum_type SignallingIndication_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.SignallingIndication."); return single_value; } void SignallingIndication_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new SignallingIndication_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.SignallingIndication."); } } SignallingIndication_template& SignallingIndication_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.SignallingIndication."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.SignallingIndication."); return value_list.list_value[list_index]; } void SignallingIndication_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(SignallingIndication::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void SignallingIndication_template::log_match(const SignallingIndication& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void SignallingIndication_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.SignallingIndication."); } } void SignallingIndication_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (SignallingIndication::enum_type)text_buf.pull_int().get_val(); if (!SignallingIndication::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.SignallingIndication.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new SignallingIndication_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.SignallingIndication."); } } boolean SignallingIndication_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean SignallingIndication_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { SignallingIndication_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { SignallingIndication::enum_type enum_val = SignallingIndication::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!SignallingIndication::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.SignallingIndication."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { SignallingIndication_template* precondition = new SignallingIndication_template; precondition->set_param(*m_p->get_elem(0)); SignallingIndication_template* implied_template = new SignallingIndication_template; implied_template->set_param(*m_p->get_elem(1)); *this = SignallingIndication_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.SignallingIndication"); } is_ifpresent = param.get_ifpresent(); } void SignallingIndication_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.SignallingIndication"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst8"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst8_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_altExtendedGuaranteedBitrates) : field_altExtendedGuaranteedBitrateType(par_altExtendedGuaranteedBitrateType), field_altExtendedGuaranteedBitrates(par_altExtendedGuaranteedBitrates) { } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); if (other_value.altExtendedGuaranteedBitrateType().is_bound()) field_altExtendedGuaranteedBitrateType = other_value.altExtendedGuaranteedBitrateType(); else field_altExtendedGuaranteedBitrateType.clean_up(); if (other_value.altExtendedGuaranteedBitrates().is_bound()) field_altExtendedGuaranteedBitrates = other_value.altExtendedGuaranteedBitrates(); else field_altExtendedGuaranteedBitrates.clean_up(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::clean_up() { field_altExtendedGuaranteedBitrateType.clean_up(); field_altExtendedGuaranteedBitrates.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_descr_; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); if (other_value.altExtendedGuaranteedBitrateType().is_bound()) field_altExtendedGuaranteedBitrateType = other_value.altExtendedGuaranteedBitrateType(); else field_altExtendedGuaranteedBitrateType.clean_up(); if (other_value.altExtendedGuaranteedBitrates().is_bound()) field_altExtendedGuaranteedBitrates = other_value.altExtendedGuaranteedBitrates(); else field_altExtendedGuaranteedBitrates.clean_up(); } return *this; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::operator==(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) const { return field_altExtendedGuaranteedBitrateType==other_value.field_altExtendedGuaranteedBitrateType && field_altExtendedGuaranteedBitrates==other_value.field_altExtendedGuaranteedBitrates; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::is_bound() const { return (field_altExtendedGuaranteedBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altExtendedGuaranteedBitrates.get_selection() || field_altExtendedGuaranteedBitrates.is_bound()); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::is_value() const { return field_altExtendedGuaranteedBitrateType.is_value() && (OPTIONAL_OMIT == field_altExtendedGuaranteedBitrates.get_selection() || field_altExtendedGuaranteedBitrates.is_value()); } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::size_of() const { int ret_val = 1; if (field_altExtendedGuaranteedBitrates.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altExtendedGuaranteedBitrateType := "); field_altExtendedGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altExtendedGuaranteedBitrates := "); field_altExtendedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::set_implicit_omit() { if (altExtendedGuaranteedBitrateType().is_bound()) altExtendedGuaranteedBitrateType().set_implicit_omit(); if (!altExtendedGuaranteedBitrates().is_bound()) altExtendedGuaranteedBitrates() = OMIT_VALUE; else altExtendedGuaranteedBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altExtendedGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altExtendedGuaranteedBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf"); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::encode_text(Text_Buf& text_buf) const { field_altExtendedGuaranteedBitrateType.encode_text(text_buf); field_altExtendedGuaranteedBitrates.encode_text(text_buf); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::decode_text(Text_Buf& text_buf) { field_altExtendedGuaranteedBitrateType.decode_text(text_buf); field_altExtendedGuaranteedBitrates.decode_text(text_buf); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altExtendedGuaranteedBitrateType': "); new_tlv->add_TLV(field_altExtendedGuaranteedBitrateType.BER_encode_TLV(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_coding)); ec_1.set_msg("altExtendedGuaranteedBitrates': "); new_tlv->add_TLV(field_altExtendedGuaranteedBitrates.BER_encode_TLV(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altExtendedGuaranteedBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altExtendedGuaranteedBitrateType.BER_decode_TLV(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altExtendedGuaranteedBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altExtendedGuaranteedBitrates=OMIT_VALUE; else { field_altExtendedGuaranteedBitrates.BER_decode_TLV(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, tmp_tlv, L_form); if(field_altExtendedGuaranteedBitrates.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altExtendedGuaranteedBitrateType"); enc_len += field_altExtendedGuaranteedBitrateType.JSON_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_tok, FALSE); } if (field_altExtendedGuaranteedBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altExtendedGuaranteedBitrates"); enc_len += field_altExtendedGuaranteedBitrates.JSON_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altExtendedGuaranteedBitrateType_found = FALSE; boolean altExtendedGuaranteedBitrates_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (32 == name_len && 0 == strncmp(fld_name, "altExtendedGuaranteedBitrateType", name_len)) { altExtendedGuaranteedBitrateType_found = TRUE; int ret_val = field_altExtendedGuaranteedBitrateType.JSON_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 32, "altExtendedGuaranteedBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (29 == name_len && 0 == strncmp(fld_name, "altExtendedGuaranteedBitrates", name_len)) { altExtendedGuaranteedBitrates_found = TRUE; int ret_val = field_altExtendedGuaranteedBitrates.JSON_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 29, "altExtendedGuaranteedBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altExtendedGuaranteedBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altExtendedGuaranteedBitrateType"); return JSON_ERROR_FATAL; } if (!altExtendedGuaranteedBitrates_found) { field_altExtendedGuaranteedBitrates = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altExtendedGuaranteedBitrates.is_present()) { c |= 64; } p_buf.put_c(c); field_altExtendedGuaranteedBitrateType.OER_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_buf); if (field_altExtendedGuaranteedBitrates.is_present()) field_altExtendedGuaranteedBitrates.OER_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_buf); return 0; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altExtendedGuaranteedBitrateType.OER_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altExtendedGuaranteedBitrates.OER_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_buf, p_oer); else field_altExtendedGuaranteedBitrates = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altExtendedGuaranteedBitrates_present = field_altExtendedGuaranteedBitrates.is_present(); p_buf.PER_put_bit(field_altExtendedGuaranteedBitrates_present); field_altExtendedGuaranteedBitrateType.PER_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altExtendedGuaranteedBitrates_present) field_altExtendedGuaranteedBitrates.PER_encode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_buf, p_options); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altExtendedGuaranteedBitrates_present = p_buf.PER_get_bit(); field_altExtendedGuaranteedBitrateType.PER_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altExtendedGuaranteedBitrates_present) field_altExtendedGuaranteedBitrates.PER_decode(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_altExtendedGuaranteedBitrates_descr_, p_buf, p_options); else field_altExtendedGuaranteedBitrates = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::single_value_struct { Alt__RAB__Parameter__GuaranteedBitrateType_template field_altExtendedGuaranteedBitrateType; Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template field_altExtendedGuaranteedBitrates; }; void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altExtendedGuaranteedBitrateType = ANY_VALUE; single_value->field_altExtendedGuaranteedBitrates = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::copy_value(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altExtendedGuaranteedBitrateType().is_bound()) { single_value->field_altExtendedGuaranteedBitrateType = other_value.altExtendedGuaranteedBitrateType(); } else { single_value->field_altExtendedGuaranteedBitrateType.clean_up(); } if (other_value.altExtendedGuaranteedBitrates().is_bound()) { if (other_value.altExtendedGuaranteedBitrates().ispresent()) single_value->field_altExtendedGuaranteedBitrates = other_value.altExtendedGuaranteedBitrates()(); else single_value->field_altExtendedGuaranteedBitrates = OMIT_VALUE; } else { single_value->field_altExtendedGuaranteedBitrates.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::copy_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altExtendedGuaranteedBitrateType().get_selection()) { single_value->field_altExtendedGuaranteedBitrateType = other_value.altExtendedGuaranteedBitrateType(); } else { single_value->field_altExtendedGuaranteedBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altExtendedGuaranteedBitrates().get_selection()) { single_value->field_altExtendedGuaranteedBitrates = other_value.altExtendedGuaranteedBitrates(); } else { single_value->field_altExtendedGuaranteedBitrates.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template() { } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template* p_precondition, Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::~Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); } return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::match(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altExtendedGuaranteedBitrateType().is_bound()) return FALSE; if(!single_value->field_altExtendedGuaranteedBitrateType.match(other_value.altExtendedGuaranteedBitrateType(), legacy))return FALSE; if(!other_value.altExtendedGuaranteedBitrates().is_bound()) return FALSE; if((other_value.altExtendedGuaranteedBitrates().ispresent() ? !single_value->field_altExtendedGuaranteedBitrates.match((const Alt__RAB__Parameter__ExtendedGuaranteedBitrates&)other_value.altExtendedGuaranteedBitrates(), legacy) : !single_value->field_altExtendedGuaranteedBitrates.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altExtendedGuaranteedBitrateType.is_bound() || (single_value->field_altExtendedGuaranteedBitrates.is_omit() || single_value->field_altExtendedGuaranteedBitrates.is_bound()); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altExtendedGuaranteedBitrateType.is_value() && (single_value->field_altExtendedGuaranteedBitrates.is_omit() || single_value->field_altExtendedGuaranteedBitrates.is_value()); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf ret_val; if (single_value->field_altExtendedGuaranteedBitrateType.is_bound()) { ret_val.altExtendedGuaranteedBitrateType() = single_value->field_altExtendedGuaranteedBitrateType.valueof(); } if (single_value->field_altExtendedGuaranteedBitrates.is_omit()) ret_val.altExtendedGuaranteedBitrates() = OMIT_VALUE; else if (single_value->field_altExtendedGuaranteedBitrates.is_bound()) { ret_val.altExtendedGuaranteedBitrates() = single_value->field_altExtendedGuaranteedBitrates.valueof(); } return ret_val; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template[list_length]; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::altExtendedGuaranteedBitrateType() { set_specific(); return single_value->field_altExtendedGuaranteedBitrateType; } const Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::altExtendedGuaranteedBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altExtendedGuaranteedBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); return single_value->field_altExtendedGuaranteedBitrateType; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::altExtendedGuaranteedBitrates() { set_specific(); return single_value->field_altExtendedGuaranteedBitrates; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::altExtendedGuaranteedBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altExtendedGuaranteedBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); return single_value->field_altExtendedGuaranteedBitrates; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altExtendedGuaranteedBitrates.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); } return 0; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altExtendedGuaranteedBitrateType := "); single_value->field_altExtendedGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altExtendedGuaranteedBitrates := "); single_value->field_altExtendedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::log_match(const Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altExtendedGuaranteedBitrateType.match(match_value.altExtendedGuaranteedBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedGuaranteedBitrateType"); single_value->field_altExtendedGuaranteedBitrateType.log_match(match_value.altExtendedGuaranteedBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altExtendedGuaranteedBitrates().ispresent()){ if(!single_value->field_altExtendedGuaranteedBitrates.match(match_value.altExtendedGuaranteedBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedGuaranteedBitrates"); single_value->field_altExtendedGuaranteedBitrates.log_match(match_value.altExtendedGuaranteedBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altExtendedGuaranteedBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedGuaranteedBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altExtendedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altExtendedGuaranteedBitrateType := "); single_value->field_altExtendedGuaranteedBitrateType.log_match(match_value.altExtendedGuaranteedBitrateType(), legacy); TTCN_Logger::log_event_str(", altExtendedGuaranteedBitrates := "); if (match_value.altExtendedGuaranteedBitrates().ispresent()) { single_value->field_altExtendedGuaranteedBitrates.log_match(match_value.altExtendedGuaranteedBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altExtendedGuaranteedBitrates.log(); if (single_value->field_altExtendedGuaranteedBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altExtendedGuaranteedBitrateType().is_bound()) altExtendedGuaranteedBitrateType().set_implicit_omit(); if (!altExtendedGuaranteedBitrates().is_bound()) altExtendedGuaranteedBitrates() = OMIT_VALUE; else altExtendedGuaranteedBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altExtendedGuaranteedBitrateType.encode_text(text_buf); single_value->field_altExtendedGuaranteedBitrates.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altExtendedGuaranteedBitrateType.decode_text(text_buf); single_value->field_altExtendedGuaranteedBitrates.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf."); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altExtendedGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altExtendedGuaranteedBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template* precondition = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template* implied_template = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altExtendedGuaranteedBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf"); single_value->field_altExtendedGuaranteedBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrateInf"); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates::Alt__RAB__Parameter__ExtendedGuaranteedBitrates(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates::~Alt__RAB__Parameter__ExtendedGuaranteedBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__ExtendedGuaranteedBitrates& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator==(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateList& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList; } return *val_ptr->value_elements[index_value]; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateList& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateList& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateList& Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__ExtendedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::operator+(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__ExtendedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates","element"); Alt__RAB__Parameter__ExtendedGuaranteedBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates","element"); Alt__RAB__Parameter__ExtendedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__ExtendedGuaranteedBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } Alt__RAB__Parameter__ExtendedGuaranteedBitrateList* val = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::copy_value(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::copy_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template() { } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedGuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates from an unbound optional field."); } } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template* p_precondition, Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::~Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template() { clean_up(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedGuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); } return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); break; } return *single_value.value_elements[index_value]; } Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::match(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); Alt__RAB__Parameter__ExtendedGuaranteedBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template& Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::log_match(const Alt__RAB__Parameter__ExtendedGuaranteedBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); single_value.value_elements = (Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedGuaranteedBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates."); } } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template* precondition = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template* implied_template = new Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedGuaranteedBitrates"); } boolean Alt__RAB__Parameter__ExtendedGuaranteedBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } Alt__RAB__Parameter__ExtendedMaxBitrateInf::Alt__RAB__Parameter__ExtendedMaxBitrateInf() { } Alt__RAB__Parameter__ExtendedMaxBitrateInf::Alt__RAB__Parameter__ExtendedMaxBitrateInf(const Alt__RAB__Parameter__MaxBitrateType& par_altExtendedMaxBitrateType, const OPTIONAL< Alt__RAB__Parameter__ExtendedMaxBitrates >& par_altExtendedMaxBitrates) : field_altExtendedMaxBitrateType(par_altExtendedMaxBitrateType), field_altExtendedMaxBitrates(par_altExtendedMaxBitrates) { } Alt__RAB__Parameter__ExtendedMaxBitrateInf::Alt__RAB__Parameter__ExtendedMaxBitrateInf(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); if (other_value.altExtendedMaxBitrateType().is_bound()) field_altExtendedMaxBitrateType = other_value.altExtendedMaxBitrateType(); else field_altExtendedMaxBitrateType.clean_up(); if (other_value.altExtendedMaxBitrates().is_bound()) field_altExtendedMaxBitrates = other_value.altExtendedMaxBitrates(); else field_altExtendedMaxBitrates.clean_up(); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::clean_up() { field_altExtendedMaxBitrateType.clean_up(); field_altExtendedMaxBitrates.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__ExtendedMaxBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__ExtendedMaxBitrateInf_descr_; } Alt__RAB__Parameter__ExtendedMaxBitrateInf& Alt__RAB__Parameter__ExtendedMaxBitrateInf::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); if (other_value.altExtendedMaxBitrateType().is_bound()) field_altExtendedMaxBitrateType = other_value.altExtendedMaxBitrateType(); else field_altExtendedMaxBitrateType.clean_up(); if (other_value.altExtendedMaxBitrates().is_bound()) field_altExtendedMaxBitrates = other_value.altExtendedMaxBitrates(); else field_altExtendedMaxBitrates.clean_up(); } return *this; } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf::operator==(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) const { return field_altExtendedMaxBitrateType==other_value.field_altExtendedMaxBitrateType && field_altExtendedMaxBitrates==other_value.field_altExtendedMaxBitrates; } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf::is_bound() const { return (field_altExtendedMaxBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altExtendedMaxBitrates.get_selection() || field_altExtendedMaxBitrates.is_bound()); } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf::is_value() const { return field_altExtendedMaxBitrateType.is_value() && (OPTIONAL_OMIT == field_altExtendedMaxBitrates.get_selection() || field_altExtendedMaxBitrates.is_value()); } int Alt__RAB__Parameter__ExtendedMaxBitrateInf::size_of() const { int ret_val = 1; if (field_altExtendedMaxBitrates.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altExtendedMaxBitrateType := "); field_altExtendedMaxBitrateType.log(); TTCN_Logger::log_event_str(", altExtendedMaxBitrates := "); field_altExtendedMaxBitrates.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::set_implicit_omit() { if (altExtendedMaxBitrateType().is_bound()) altExtendedMaxBitrateType().set_implicit_omit(); if (!altExtendedMaxBitrates().is_bound()) altExtendedMaxBitrates() = OMIT_VALUE; else altExtendedMaxBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altExtendedMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altExtendedMaxBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf"); } } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::encode_text(Text_Buf& text_buf) const { field_altExtendedMaxBitrateType.encode_text(text_buf); field_altExtendedMaxBitrates.encode_text(text_buf); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::decode_text(Text_Buf& text_buf) { field_altExtendedMaxBitrateType.decode_text(text_buf); field_altExtendedMaxBitrates.decode_text(text_buf); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__ExtendedMaxBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altExtendedMaxBitrateType': "); new_tlv->add_TLV(field_altExtendedMaxBitrateType.BER_encode_TLV(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_coding)); ec_1.set_msg("altExtendedMaxBitrates': "); new_tlv->add_TLV(field_altExtendedMaxBitrates.BER_encode_TLV(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altExtendedMaxBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altExtendedMaxBitrateType.BER_decode_TLV(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altExtendedMaxBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altExtendedMaxBitrates=OMIT_VALUE; else { field_altExtendedMaxBitrates.BER_decode_TLV(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, tmp_tlv, L_form); if(field_altExtendedMaxBitrates.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__ExtendedMaxBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altExtendedMaxBitrateType"); enc_len += field_altExtendedMaxBitrateType.JSON_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_tok, FALSE); } if (field_altExtendedMaxBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altExtendedMaxBitrates"); enc_len += field_altExtendedMaxBitrates.JSON_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__ExtendedMaxBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altExtendedMaxBitrateType_found = FALSE; boolean altExtendedMaxBitrates_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (25 == name_len && 0 == strncmp(fld_name, "altExtendedMaxBitrateType", name_len)) { altExtendedMaxBitrateType_found = TRUE; int ret_val = field_altExtendedMaxBitrateType.JSON_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 25, "altExtendedMaxBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (22 == name_len && 0 == strncmp(fld_name, "altExtendedMaxBitrates", name_len)) { altExtendedMaxBitrates_found = TRUE; int ret_val = field_altExtendedMaxBitrates.JSON_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 22, "altExtendedMaxBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altExtendedMaxBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altExtendedMaxBitrateType"); return JSON_ERROR_FATAL; } if (!altExtendedMaxBitrates_found) { field_altExtendedMaxBitrates = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__ExtendedMaxBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altExtendedMaxBitrates.is_present()) { c |= 64; } p_buf.put_c(c); field_altExtendedMaxBitrateType.OER_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_buf); if (field_altExtendedMaxBitrates.is_present()) field_altExtendedMaxBitrates.OER_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_buf); return 0; } int Alt__RAB__Parameter__ExtendedMaxBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altExtendedMaxBitrateType.OER_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altExtendedMaxBitrates.OER_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_buf, p_oer); else field_altExtendedMaxBitrates = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altExtendedMaxBitrates_present = field_altExtendedMaxBitrates.is_present(); p_buf.PER_put_bit(field_altExtendedMaxBitrates_present); field_altExtendedMaxBitrateType.PER_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_buf, p_options); if (field_altExtendedMaxBitrates_present) field_altExtendedMaxBitrates.PER_encode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_buf, p_options); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altExtendedMaxBitrates_present = p_buf.PER_get_bit(); field_altExtendedMaxBitrateType.PER_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrateType_descr_, p_buf, p_options); if (field_altExtendedMaxBitrates_present) field_altExtendedMaxBitrates.PER_decode(Alt__RAB__Parameter__ExtendedMaxBitrateInf_altExtendedMaxBitrates_descr_, p_buf, p_options); else field_altExtendedMaxBitrates = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::single_value_struct { Alt__RAB__Parameter__MaxBitrateType_template field_altExtendedMaxBitrateType; Alt__RAB__Parameter__ExtendedMaxBitrates_template field_altExtendedMaxBitrates; }; void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altExtendedMaxBitrateType = ANY_VALUE; single_value->field_altExtendedMaxBitrates = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::copy_value(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altExtendedMaxBitrateType().is_bound()) { single_value->field_altExtendedMaxBitrateType = other_value.altExtendedMaxBitrateType(); } else { single_value->field_altExtendedMaxBitrateType.clean_up(); } if (other_value.altExtendedMaxBitrates().is_bound()) { if (other_value.altExtendedMaxBitrates().ispresent()) single_value->field_altExtendedMaxBitrates = other_value.altExtendedMaxBitrates()(); else single_value->field_altExtendedMaxBitrates = OMIT_VALUE; } else { single_value->field_altExtendedMaxBitrates.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::copy_template(const Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altExtendedMaxBitrateType().get_selection()) { single_value->field_altExtendedMaxBitrateType = other_value.altExtendedMaxBitrateType(); } else { single_value->field_altExtendedMaxBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altExtendedMaxBitrates().get_selection()) { single_value->field_altExtendedMaxBitrates = other_value.altExtendedMaxBitrates(); } else { single_value->field_altExtendedMaxBitrates.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template() { } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedMaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(Alt__RAB__Parameter__ExtendedMaxBitrateInf_template* p_precondition, Alt__RAB__Parameter__ExtendedMaxBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(const Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::~Alt__RAB__Parameter__ExtendedMaxBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedMaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); } return *this; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::match(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altExtendedMaxBitrateType().is_bound()) return FALSE; if(!single_value->field_altExtendedMaxBitrateType.match(other_value.altExtendedMaxBitrateType(), legacy))return FALSE; if(!other_value.altExtendedMaxBitrates().is_bound()) return FALSE; if((other_value.altExtendedMaxBitrates().ispresent() ? !single_value->field_altExtendedMaxBitrates.match((const Alt__RAB__Parameter__ExtendedMaxBitrates&)other_value.altExtendedMaxBitrates(), legacy) : !single_value->field_altExtendedMaxBitrates.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altExtendedMaxBitrateType.is_bound() || (single_value->field_altExtendedMaxBitrates.is_omit() || single_value->field_altExtendedMaxBitrates.is_bound()); } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altExtendedMaxBitrateType.is_value() && (single_value->field_altExtendedMaxBitrates.is_omit() || single_value->field_altExtendedMaxBitrates.is_value()); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__ExtendedMaxBitrateInf Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); Alt__RAB__Parameter__ExtendedMaxBitrateInf ret_val; if (single_value->field_altExtendedMaxBitrateType.is_bound()) { ret_val.altExtendedMaxBitrateType() = single_value->field_altExtendedMaxBitrateType.valueof(); } if (single_value->field_altExtendedMaxBitrates.is_omit()) ret_val.altExtendedMaxBitrates() = OMIT_VALUE; else if (single_value->field_altExtendedMaxBitrates.is_bound()) { ret_val.altExtendedMaxBitrates() = single_value->field_altExtendedMaxBitrates.valueof(); } return ret_val; } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template[list_length]; } Alt__RAB__Parameter__ExtendedMaxBitrateInf_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::altExtendedMaxBitrateType() { set_specific(); return single_value->field_altExtendedMaxBitrateType; } const Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::altExtendedMaxBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altExtendedMaxBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); return single_value->field_altExtendedMaxBitrateType; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::altExtendedMaxBitrates() { set_specific(); return single_value->field_altExtendedMaxBitrates; } const Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::altExtendedMaxBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altExtendedMaxBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); return single_value->field_altExtendedMaxBitrates; } int Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altExtendedMaxBitrates.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); } return 0; } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altExtendedMaxBitrateType := "); single_value->field_altExtendedMaxBitrateType.log(); TTCN_Logger::log_event_str(", altExtendedMaxBitrates := "); single_value->field_altExtendedMaxBitrates.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::log_match(const Alt__RAB__Parameter__ExtendedMaxBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altExtendedMaxBitrateType.match(match_value.altExtendedMaxBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedMaxBitrateType"); single_value->field_altExtendedMaxBitrateType.log_match(match_value.altExtendedMaxBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altExtendedMaxBitrates().ispresent()){ if(!single_value->field_altExtendedMaxBitrates.match(match_value.altExtendedMaxBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedMaxBitrates"); single_value->field_altExtendedMaxBitrates.log_match(match_value.altExtendedMaxBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altExtendedMaxBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altExtendedMaxBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altExtendedMaxBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altExtendedMaxBitrateType := "); single_value->field_altExtendedMaxBitrateType.log_match(match_value.altExtendedMaxBitrateType(), legacy); TTCN_Logger::log_event_str(", altExtendedMaxBitrates := "); if (match_value.altExtendedMaxBitrates().ispresent()) { single_value->field_altExtendedMaxBitrates.log_match(match_value.altExtendedMaxBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altExtendedMaxBitrates.log(); if (single_value->field_altExtendedMaxBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altExtendedMaxBitrateType().is_bound()) altExtendedMaxBitrateType().set_implicit_omit(); if (!altExtendedMaxBitrates().is_bound()) altExtendedMaxBitrates() = OMIT_VALUE; else altExtendedMaxBitrates().set_implicit_omit(); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altExtendedMaxBitrateType.encode_text(text_buf); single_value->field_altExtendedMaxBitrates.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); } } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altExtendedMaxBitrateType.decode_text(text_buf); single_value->field_altExtendedMaxBitrates.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf."); } } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__ExtendedMaxBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altExtendedMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altExtendedMaxBitrates().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altExtendedMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altExtendedMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__ExtendedMaxBitrateInf_template* precondition = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__ExtendedMaxBitrateInf_template* implied_template = new Alt__RAB__Parameter__ExtendedMaxBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__ExtendedMaxBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altExtendedMaxBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf"); single_value->field_altExtendedMaxBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrateInf"); } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__ExtendedMaxBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__ExtendedMaxBitrates::Alt__RAB__Parameter__ExtendedMaxBitrates(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__ExtendedMaxBitrates::~Alt__RAB__Parameter__ExtendedMaxBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__ExtendedMaxBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__ExtendedMaxBitrates& Alt__RAB__Parameter__ExtendedMaxBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__ExtendedMaxBitrates& Alt__RAB__Parameter__ExtendedMaxBitrates::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__ExtendedMaxBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__ExtendedMaxBitrates::operator==(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } Alt__RAB__Parameter__ExtendedMaxBitrateList& Alt__RAB__Parameter__ExtendedMaxBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new Alt__RAB__Parameter__ExtendedMaxBitrateList; } return *val_ptr->value_elements[index_value]; } Alt__RAB__Parameter__ExtendedMaxBitrateList& Alt__RAB__Parameter__ExtendedMaxBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__ExtendedMaxBitrateList& Alt__RAB__Parameter__ExtendedMaxBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const Alt__RAB__Parameter__ExtendedMaxBitrateList& Alt__RAB__Parameter__ExtendedMaxBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__ExtendedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new Alt__RAB__Parameter__ExtendedMaxBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::operator+(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__ExtendedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates","element"); Alt__RAB__Parameter__ExtendedMaxBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__ExtendedMaxBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates","element"); Alt__RAB__Parameter__ExtendedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__ExtendedMaxBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__ExtendedMaxBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__ExtendedMaxBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__ExtendedMaxBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__ExtendedMaxBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__ExtendedMaxBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__ExtendedMaxBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__ExtendedMaxBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__ExtendedMaxBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__ExtendedMaxBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__ExtendedMaxBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__ExtendedMaxBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__ExtendedMaxBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__ExtendedMaxBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new Alt__RAB__Parameter__ExtendedMaxBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__ExtendedMaxBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__ExtendedMaxBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } Alt__RAB__Parameter__ExtendedMaxBitrateList* val = new Alt__RAB__Parameter__ExtendedMaxBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__ExtendedMaxBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__ExtendedMaxBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__ExtendedMaxBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__ExtendedMaxBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::copy_value(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::copy_template(const Alt__RAB__Parameter__ExtendedMaxBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__ExtendedMaxBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__ExtendedMaxBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__ExtendedMaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__ExtendedMaxBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__ExtendedMaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template() { } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedMaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates from an unbound optional field."); } } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(Alt__RAB__Parameter__ExtendedMaxBitrates_template* p_precondition, Alt__RAB__Parameter__ExtendedMaxBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__ExtendedMaxBitrates_template::Alt__RAB__Parameter__ExtendedMaxBitrates_template(const Alt__RAB__Parameter__ExtendedMaxBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__ExtendedMaxBitrates_template::~Alt__RAB__Parameter__ExtendedMaxBitrates_template() { clean_up(); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__ExtendedMaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); } return *this; } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator=(const Alt__RAB__Parameter__ExtendedMaxBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } Alt__RAB__Parameter__ExtendedMaxBitrateList_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); break; } return *single_value.value_elements[index_value]; } Alt__RAB__Parameter__ExtendedMaxBitrateList_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return (*this)[(int)index_value]; } const Alt__RAB__Parameter__ExtendedMaxBitrateList_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const Alt__RAB__Parameter__ExtendedMaxBitrateList_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__ExtendedMaxBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__ExtendedMaxBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::match(const Alt__RAB__Parameter__ExtendedMaxBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); Alt__RAB__Parameter__ExtendedMaxBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__ExtendedMaxBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__ExtendedMaxBitrates Alt__RAB__Parameter__ExtendedMaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__ExtendedMaxBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__ExtendedMaxBitrates_template& Alt__RAB__Parameter__ExtendedMaxBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::log_match(const Alt__RAB__Parameter__ExtendedMaxBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); } } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); single_value.value_elements = (Alt__RAB__Parameter__ExtendedMaxBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new Alt__RAB__Parameter__ExtendedMaxBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__ExtendedMaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates."); } } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__ExtendedMaxBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__ExtendedMaxBitrates_template* precondition = new Alt__RAB__Parameter__ExtendedMaxBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__ExtendedMaxBitrates_template* implied_template = new Alt__RAB__Parameter__ExtendedMaxBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__ExtendedMaxBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__ExtendedMaxBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-ExtendedMaxBitrates"); } boolean Alt__RAB__Parameter__ExtendedMaxBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } Alt__RAB__Parameter__SupportedMaxBitrateInf::Alt__RAB__Parameter__SupportedMaxBitrateInf() { } Alt__RAB__Parameter__SupportedMaxBitrateInf::Alt__RAB__Parameter__SupportedMaxBitrateInf(const Alt__RAB__Parameter__MaxBitrateType& par_altSupportedMaxBitrateType, const OPTIONAL< Alt__RAB__Parameter__SupportedMaxBitrates >& par_altSupportedMaxBitrates, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 >& par_iE__Extensions) : field_altSupportedMaxBitrateType(par_altSupportedMaxBitrateType), field_altSupportedMaxBitrates(par_altSupportedMaxBitrates), field_iE__Extensions(par_iE__Extensions) { } Alt__RAB__Parameter__SupportedMaxBitrateInf::Alt__RAB__Parameter__SupportedMaxBitrateInf(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); if (other_value.altSupportedMaxBitrateType().is_bound()) field_altSupportedMaxBitrateType = other_value.altSupportedMaxBitrateType(); else field_altSupportedMaxBitrateType.clean_up(); if (other_value.altSupportedMaxBitrates().is_bound()) field_altSupportedMaxBitrates = other_value.altSupportedMaxBitrates(); else field_altSupportedMaxBitrates.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::clean_up() { field_altSupportedMaxBitrateType.clean_up(); field_altSupportedMaxBitrates.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__SupportedMaxBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__SupportedMaxBitrateInf_descr_; } Alt__RAB__Parameter__SupportedMaxBitrateInf& Alt__RAB__Parameter__SupportedMaxBitrateInf::operator=(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); if (other_value.altSupportedMaxBitrateType().is_bound()) field_altSupportedMaxBitrateType = other_value.altSupportedMaxBitrateType(); else field_altSupportedMaxBitrateType.clean_up(); if (other_value.altSupportedMaxBitrates().is_bound()) field_altSupportedMaxBitrates = other_value.altSupportedMaxBitrates(); else field_altSupportedMaxBitrates.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf::operator==(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) const { return field_altSupportedMaxBitrateType==other_value.field_altSupportedMaxBitrateType && field_altSupportedMaxBitrates==other_value.field_altSupportedMaxBitrates && field_iE__Extensions==other_value.field_iE__Extensions; } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf::is_bound() const { return (field_altSupportedMaxBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altSupportedMaxBitrates.get_selection() || field_altSupportedMaxBitrates.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf::is_value() const { return field_altSupportedMaxBitrateType.is_value() && (OPTIONAL_OMIT == field_altSupportedMaxBitrates.get_selection() || field_altSupportedMaxBitrates.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int Alt__RAB__Parameter__SupportedMaxBitrateInf::size_of() const { int ret_val = 1; if (field_altSupportedMaxBitrates.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__SupportedMaxBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altSupportedMaxBitrateType := "); field_altSupportedMaxBitrateType.log(); TTCN_Logger::log_event_str(", altSupportedMaxBitrates := "); field_altSupportedMaxBitrates.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::set_implicit_omit() { if (altSupportedMaxBitrateType().is_bound()) altSupportedMaxBitrateType().set_implicit_omit(); if (!altSupportedMaxBitrates().is_bound()) altSupportedMaxBitrates() = OMIT_VALUE; else altSupportedMaxBitrates().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altSupportedMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altSupportedMaxBitrates().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); } } void Alt__RAB__Parameter__SupportedMaxBitrateInf::encode_text(Text_Buf& text_buf) const { field_altSupportedMaxBitrateType.encode_text(text_buf); field_altSupportedMaxBitrates.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::decode_text(Text_Buf& text_buf) { field_altSupportedMaxBitrateType.decode_text(text_buf); field_altSupportedMaxBitrates.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__SupportedMaxBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altSupportedMaxBitrateType': "); new_tlv->add_TLV(field_altSupportedMaxBitrateType.BER_encode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_coding)); ec_1.set_msg("altSupportedMaxBitrates': "); new_tlv->add_TLV(field_altSupportedMaxBitrates.BER_encode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altSupportedMaxBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altSupportedMaxBitrateType.BER_decode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altSupportedMaxBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altSupportedMaxBitrates=OMIT_VALUE; else { field_altSupportedMaxBitrates.BER_decode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, tmp_tlv, L_form); if(field_altSupportedMaxBitrates.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__SupportedMaxBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altSupportedMaxBitrateType"); enc_len += field_altSupportedMaxBitrateType.JSON_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_tok, FALSE); } if (field_altSupportedMaxBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altSupportedMaxBitrates"); enc_len += field_altSupportedMaxBitrates.JSON_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__SupportedMaxBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altSupportedMaxBitrateType_found = FALSE; boolean altSupportedMaxBitrates_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (26 == name_len && 0 == strncmp(fld_name, "altSupportedMaxBitrateType", name_len)) { altSupportedMaxBitrateType_found = TRUE; int ret_val = field_altSupportedMaxBitrateType.JSON_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 26, "altSupportedMaxBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (23 == name_len && 0 == strncmp(fld_name, "altSupportedMaxBitrates", name_len)) { altSupportedMaxBitrates_found = TRUE; int ret_val = field_altSupportedMaxBitrates.JSON_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 23, "altSupportedMaxBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altSupportedMaxBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altSupportedMaxBitrateType"); return JSON_ERROR_FATAL; } if (!altSupportedMaxBitrates_found) { field_altSupportedMaxBitrates = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__SupportedMaxBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altSupportedMaxBitrates.is_present()) { c |= 64; } if (field_iE__Extensions.is_present()) { c |= 32; } p_buf.put_c(c); field_altSupportedMaxBitrateType.OER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_buf); if (field_altSupportedMaxBitrates.is_present()) field_altSupportedMaxBitrates.OER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_buf); return 0; } int Alt__RAB__Parameter__SupportedMaxBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altSupportedMaxBitrateType.OER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altSupportedMaxBitrates.OER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_buf, p_oer); else field_altSupportedMaxBitrates = OMIT_VALUE; if (uc[0] & 32) field_iE__Extensions.OER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__SupportedMaxBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altSupportedMaxBitrates_present = field_altSupportedMaxBitrates.is_present(); p_buf.PER_put_bit(field_altSupportedMaxBitrates_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_altSupportedMaxBitrateType.PER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_buf, p_options); if (field_altSupportedMaxBitrates_present) field_altSupportedMaxBitrates.PER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_buf, p_options); } void Alt__RAB__Parameter__SupportedMaxBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altSupportedMaxBitrates_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_altSupportedMaxBitrateType.PER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrateType_descr_, p_buf, p_options); if (field_altSupportedMaxBitrates_present) field_altSupportedMaxBitrates.PER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_altSupportedMaxBitrates_descr_, p_buf, p_options); else field_altSupportedMaxBitrates = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(Alt__RAB__Parameter__SupportedMaxBitrateInf_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__SupportedMaxBitrateInf_template::single_value_struct { Alt__RAB__Parameter__MaxBitrateType_template field_altSupportedMaxBitrateType; Alt__RAB__Parameter__SupportedMaxBitrates_template field_altSupportedMaxBitrates; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template field_iE__Extensions; }; void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altSupportedMaxBitrateType = ANY_VALUE; single_value->field_altSupportedMaxBitrates = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::copy_value(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altSupportedMaxBitrateType().is_bound()) { single_value->field_altSupportedMaxBitrateType = other_value.altSupportedMaxBitrateType(); } else { single_value->field_altSupportedMaxBitrateType.clean_up(); } if (other_value.altSupportedMaxBitrates().is_bound()) { if (other_value.altSupportedMaxBitrates().ispresent()) single_value->field_altSupportedMaxBitrates = other_value.altSupportedMaxBitrates()(); else single_value->field_altSupportedMaxBitrates = OMIT_VALUE; } else { single_value->field_altSupportedMaxBitrates.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::copy_template(const Alt__RAB__Parameter__SupportedMaxBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altSupportedMaxBitrateType().get_selection()) { single_value->field_altSupportedMaxBitrateType = other_value.altSupportedMaxBitrateType(); } else { single_value->field_altSupportedMaxBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altSupportedMaxBitrates().get_selection()) { single_value->field_altSupportedMaxBitrates = other_value.altSupportedMaxBitrates(); } else { single_value->field_altSupportedMaxBitrates.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template() { } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedMaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(Alt__RAB__Parameter__SupportedMaxBitrateInf_template* p_precondition, Alt__RAB__Parameter__SupportedMaxBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::Alt__RAB__Parameter__SupportedMaxBitrateInf_template(const Alt__RAB__Parameter__SupportedMaxBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__SupportedMaxBitrateInf_template::~Alt__RAB__Parameter__SupportedMaxBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::operator=(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedMaxBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); } return *this; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::operator=(const Alt__RAB__Parameter__SupportedMaxBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf_template::match(const Alt__RAB__Parameter__SupportedMaxBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altSupportedMaxBitrateType().is_bound()) return FALSE; if(!single_value->field_altSupportedMaxBitrateType.match(other_value.altSupportedMaxBitrateType(), legacy))return FALSE; if(!other_value.altSupportedMaxBitrates().is_bound()) return FALSE; if((other_value.altSupportedMaxBitrates().ispresent() ? !single_value->field_altSupportedMaxBitrates.match((const Alt__RAB__Parameter__SupportedMaxBitrates&)other_value.altSupportedMaxBitrates(), legacy) : !single_value->field_altSupportedMaxBitrates.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altSupportedMaxBitrateType.is_bound() || (single_value->field_altSupportedMaxBitrates.is_omit() || single_value->field_altSupportedMaxBitrates.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altSupportedMaxBitrateType.is_value() && (single_value->field_altSupportedMaxBitrates.is_omit() || single_value->field_altSupportedMaxBitrates.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__SupportedMaxBitrateInf Alt__RAB__Parameter__SupportedMaxBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); Alt__RAB__Parameter__SupportedMaxBitrateInf ret_val; if (single_value->field_altSupportedMaxBitrateType.is_bound()) { ret_val.altSupportedMaxBitrateType() = single_value->field_altSupportedMaxBitrateType.valueof(); } if (single_value->field_altSupportedMaxBitrates.is_omit()) ret_val.altSupportedMaxBitrates() = OMIT_VALUE; else if (single_value->field_altSupportedMaxBitrates.is_bound()) { ret_val.altSupportedMaxBitrates() = single_value->field_altSupportedMaxBitrates.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template[list_length]; } Alt__RAB__Parameter__SupportedMaxBitrateInf_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::altSupportedMaxBitrateType() { set_specific(); return single_value->field_altSupportedMaxBitrateType; } const Alt__RAB__Parameter__MaxBitrateType_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::altSupportedMaxBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altSupportedMaxBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); return single_value->field_altSupportedMaxBitrateType; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::altSupportedMaxBitrates() { set_specific(); return single_value->field_altSupportedMaxBitrates; } const Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::altSupportedMaxBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altSupportedMaxBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); return single_value->field_altSupportedMaxBitrates; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& Alt__RAB__Parameter__SupportedMaxBitrateInf_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); return single_value->field_iE__Extensions; } int Alt__RAB__Parameter__SupportedMaxBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altSupportedMaxBitrates.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); } return 0; } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altSupportedMaxBitrateType := "); single_value->field_altSupportedMaxBitrateType.log(); TTCN_Logger::log_event_str(", altSupportedMaxBitrates := "); single_value->field_altSupportedMaxBitrates.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::log_match(const Alt__RAB__Parameter__SupportedMaxBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altSupportedMaxBitrateType.match(match_value.altSupportedMaxBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedMaxBitrateType"); single_value->field_altSupportedMaxBitrateType.log_match(match_value.altSupportedMaxBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altSupportedMaxBitrates().ispresent()){ if(!single_value->field_altSupportedMaxBitrates.match(match_value.altSupportedMaxBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedMaxBitrates"); single_value->field_altSupportedMaxBitrates.log_match(match_value.altSupportedMaxBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altSupportedMaxBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedMaxBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altSupportedMaxBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altSupportedMaxBitrateType := "); single_value->field_altSupportedMaxBitrateType.log_match(match_value.altSupportedMaxBitrateType(), legacy); TTCN_Logger::log_event_str(", altSupportedMaxBitrates := "); if (match_value.altSupportedMaxBitrates().ispresent()) { single_value->field_altSupportedMaxBitrates.log_match(match_value.altSupportedMaxBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altSupportedMaxBitrates.log(); if (single_value->field_altSupportedMaxBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altSupportedMaxBitrateType().is_bound()) altSupportedMaxBitrateType().set_implicit_omit(); if (!altSupportedMaxBitrates().is_bound()) altSupportedMaxBitrates() = OMIT_VALUE; else altSupportedMaxBitrates().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altSupportedMaxBitrateType.encode_text(text_buf); single_value->field_altSupportedMaxBitrates.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); } } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altSupportedMaxBitrateType.decode_text(text_buf); single_value->field_altSupportedMaxBitrates.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf."); } } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__SupportedMaxBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altSupportedMaxBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altSupportedMaxBitrates().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedMaxBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedMaxBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedMaxBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedMaxBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__SupportedMaxBitrateInf_template* precondition = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__SupportedMaxBitrateInf_template* implied_template = new Alt__RAB__Parameter__SupportedMaxBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__SupportedMaxBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__SupportedMaxBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altSupportedMaxBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); single_value->field_altSupportedMaxBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrateInf"); } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__SupportedMaxBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__SupportedMaxBitrates::Alt__RAB__Parameter__SupportedMaxBitrates(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__SupportedMaxBitrates::~Alt__RAB__Parameter__SupportedMaxBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__SupportedMaxBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__SupportedMaxBitrates& Alt__RAB__Parameter__SupportedMaxBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__SupportedMaxBitrates& Alt__RAB__Parameter__SupportedMaxBitrates::operator=(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__SupportedMaxBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__SupportedMaxBitrates::operator==(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedMaxBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new SupportedRAB__ParameterBitrateList; } return *val_ptr->value_elements[index_value]; } SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedMaxBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return (*this)[(int)index_value]; } const SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedMaxBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedMaxBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__SupportedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::operator+(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__SupportedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new SupportedRAB__ParameterBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates","element"); Alt__RAB__Parameter__SupportedMaxBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__SupportedMaxBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates","element"); Alt__RAB__Parameter__SupportedMaxBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new SupportedRAB__ParameterBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates::replace(int index, int len, const Alt__RAB__Parameter__SupportedMaxBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__SupportedMaxBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__SupportedMaxBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__SupportedMaxBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__SupportedMaxBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__SupportedMaxBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__SupportedMaxBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__SupportedMaxBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__SupportedMaxBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__SupportedMaxBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__SupportedMaxBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__SupportedMaxBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__SupportedMaxBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__SupportedMaxBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new SupportedRAB__ParameterBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__SupportedMaxBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__SupportedMaxBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } SupportedRAB__ParameterBitrateList* val = new SupportedRAB__ParameterBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__SupportedMaxBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__SupportedMaxBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__SupportedMaxBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__SupportedMaxBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::copy_value(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::copy_template(const Alt__RAB__Parameter__SupportedMaxBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__SupportedMaxBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__SupportedMaxBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__SupportedMaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__SupportedMaxBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__SupportedMaxBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template() { } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedMaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates from an unbound optional field."); } } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(Alt__RAB__Parameter__SupportedMaxBitrates_template* p_precondition, Alt__RAB__Parameter__SupportedMaxBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__SupportedMaxBitrates_template::Alt__RAB__Parameter__SupportedMaxBitrates_template(const Alt__RAB__Parameter__SupportedMaxBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__SupportedMaxBitrates_template::~Alt__RAB__Parameter__SupportedMaxBitrates_template() { clean_up(); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator=(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedMaxBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); } return *this; } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator=(const Alt__RAB__Parameter__SupportedMaxBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); break; } return *single_value.value_elements[index_value]; } SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return (*this)[(int)index_value]; } const SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__SupportedMaxBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__SupportedMaxBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__SupportedMaxBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::match(const Alt__RAB__Parameter__SupportedMaxBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); Alt__RAB__Parameter__SupportedMaxBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__SupportedMaxBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__SupportedMaxBitrates Alt__RAB__Parameter__SupportedMaxBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__SupportedMaxBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__SupportedMaxBitrates_template& Alt__RAB__Parameter__SupportedMaxBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__SupportedMaxBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::log_match(const Alt__RAB__Parameter__SupportedMaxBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__SupportedMaxBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); } } void Alt__RAB__Parameter__SupportedMaxBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__SupportedMaxBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates."); } } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__SupportedMaxBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__SupportedMaxBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__SupportedMaxBitrates_template* precondition = new Alt__RAB__Parameter__SupportedMaxBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__SupportedMaxBitrates_template* implied_template = new Alt__RAB__Parameter__SupportedMaxBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__SupportedMaxBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__SupportedMaxBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedMaxBitrates"); } boolean Alt__RAB__Parameter__SupportedMaxBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::UNBOUND_ELEM; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10() { val_ptr = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst10"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst10_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst9"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst9_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_altSupportedGuaranteedBitrates, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 >& par_iE__Extensions) : field_altSupportedGuaranteedBitrateType(par_altSupportedGuaranteedBitrateType), field_altSupportedGuaranteedBitrates(par_altSupportedGuaranteedBitrates), field_iE__Extensions(par_iE__Extensions) { } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); if (other_value.altSupportedGuaranteedBitrateType().is_bound()) field_altSupportedGuaranteedBitrateType = other_value.altSupportedGuaranteedBitrateType(); else field_altSupportedGuaranteedBitrateType.clean_up(); if (other_value.altSupportedGuaranteedBitrates().is_bound()) field_altSupportedGuaranteedBitrates = other_value.altSupportedGuaranteedBitrates(); else field_altSupportedGuaranteedBitrates.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::clean_up() { field_altSupportedGuaranteedBitrateType.clean_up(); field_altSupportedGuaranteedBitrates.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::get_descriptor() const { return &Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_descr_; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); if (other_value.altSupportedGuaranteedBitrateType().is_bound()) field_altSupportedGuaranteedBitrateType = other_value.altSupportedGuaranteedBitrateType(); else field_altSupportedGuaranteedBitrateType.clean_up(); if (other_value.altSupportedGuaranteedBitrates().is_bound()) field_altSupportedGuaranteedBitrates = other_value.altSupportedGuaranteedBitrates(); else field_altSupportedGuaranteedBitrates.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::operator==(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) const { return field_altSupportedGuaranteedBitrateType==other_value.field_altSupportedGuaranteedBitrateType && field_altSupportedGuaranteedBitrates==other_value.field_altSupportedGuaranteedBitrates && field_iE__Extensions==other_value.field_iE__Extensions; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::is_bound() const { return (field_altSupportedGuaranteedBitrateType.is_bound()) || (OPTIONAL_OMIT == field_altSupportedGuaranteedBitrates.get_selection() || field_altSupportedGuaranteedBitrates.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::is_value() const { return field_altSupportedGuaranteedBitrateType.is_value() && (OPTIONAL_OMIT == field_altSupportedGuaranteedBitrates.get_selection() || field_altSupportedGuaranteedBitrates.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::size_of() const { int ret_val = 1; if (field_altSupportedGuaranteedBitrates.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ altSupportedGuaranteedBitrateType := "); field_altSupportedGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altSupportedGuaranteedBitrates := "); field_altSupportedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::set_implicit_omit() { if (altSupportedGuaranteedBitrateType().is_bound()) altSupportedGuaranteedBitrateType().set_implicit_omit(); if (!altSupportedGuaranteedBitrates().is_bound()) altSupportedGuaranteedBitrates() = OMIT_VALUE; else altSupportedGuaranteedBitrates().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altSupportedGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altSupportedGuaranteedBitrates().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::encode_text(Text_Buf& text_buf) const { field_altSupportedGuaranteedBitrateType.encode_text(text_buf); field_altSupportedGuaranteedBitrates.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::decode_text(Text_Buf& text_buf) { field_altSupportedGuaranteedBitrateType.decode_text(text_buf); field_altSupportedGuaranteedBitrates.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("altSupportedGuaranteedBitrateType': "); new_tlv->add_TLV(field_altSupportedGuaranteedBitrateType.BER_encode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_coding)); ec_1.set_msg("altSupportedGuaranteedBitrates': "); new_tlv->add_TLV(field_altSupportedGuaranteedBitrates.BER_encode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("altSupportedGuaranteedBitrateType': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_altSupportedGuaranteedBitrateType.BER_decode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("altSupportedGuaranteedBitrates': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_altSupportedGuaranteedBitrates=OMIT_VALUE; else { field_altSupportedGuaranteedBitrates.BER_decode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, tmp_tlv, L_form); if(field_altSupportedGuaranteedBitrates.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altSupportedGuaranteedBitrateType"); enc_len += field_altSupportedGuaranteedBitrateType.JSON_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_tok, FALSE); } if (field_altSupportedGuaranteedBitrates.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "altSupportedGuaranteedBitrates"); enc_len += field_altSupportedGuaranteedBitrates.JSON_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean altSupportedGuaranteedBitrateType_found = FALSE; boolean altSupportedGuaranteedBitrates_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (33 == name_len && 0 == strncmp(fld_name, "altSupportedGuaranteedBitrateType", name_len)) { altSupportedGuaranteedBitrateType_found = TRUE; int ret_val = field_altSupportedGuaranteedBitrateType.JSON_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 33, "altSupportedGuaranteedBitrateType"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (30 == name_len && 0 == strncmp(fld_name, "altSupportedGuaranteedBitrates", name_len)) { altSupportedGuaranteedBitrates_found = TRUE; int ret_val = field_altSupportedGuaranteedBitrates.JSON_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 30, "altSupportedGuaranteedBitrates"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!altSupportedGuaranteedBitrateType_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "altSupportedGuaranteedBitrateType"); return JSON_ERROR_FATAL; } if (!altSupportedGuaranteedBitrates_found) { field_altSupportedGuaranteedBitrates = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_altSupportedGuaranteedBitrates.is_present()) { c |= 64; } if (field_iE__Extensions.is_present()) { c |= 32; } p_buf.put_c(c); field_altSupportedGuaranteedBitrateType.OER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_buf); if (field_altSupportedGuaranteedBitrates.is_present()) field_altSupportedGuaranteedBitrates.OER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_buf); return 0; } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_altSupportedGuaranteedBitrateType.OER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_buf, p_oer); if (uc[0] & 64) field_altSupportedGuaranteedBitrates.OER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_buf, p_oer); else field_altSupportedGuaranteedBitrates = OMIT_VALUE; if (uc[0] & 32) field_iE__Extensions.OER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_altSupportedGuaranteedBitrates_present = field_altSupportedGuaranteedBitrates.is_present(); p_buf.PER_put_bit(field_altSupportedGuaranteedBitrates_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_altSupportedGuaranteedBitrateType.PER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altSupportedGuaranteedBitrates_present) field_altSupportedGuaranteedBitrates.PER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_buf, p_options); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_altSupportedGuaranteedBitrates_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_altSupportedGuaranteedBitrateType.PER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrateType_descr_, p_buf, p_options); if (field_altSupportedGuaranteedBitrates_present) field_altSupportedGuaranteedBitrates.PER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_altSupportedGuaranteedBitrates_descr_, p_buf, p_options); else field_altSupportedGuaranteedBitrates = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::single_value_struct { Alt__RAB__Parameter__GuaranteedBitrateType_template field_altSupportedGuaranteedBitrateType; Alt__RAB__Parameter__SupportedGuaranteedBitrates_template field_altSupportedGuaranteedBitrates; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template field_iE__Extensions; }; void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_altSupportedGuaranteedBitrateType = ANY_VALUE; single_value->field_altSupportedGuaranteedBitrates = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::copy_value(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) { single_value = new single_value_struct; if (other_value.altSupportedGuaranteedBitrateType().is_bound()) { single_value->field_altSupportedGuaranteedBitrateType = other_value.altSupportedGuaranteedBitrateType(); } else { single_value->field_altSupportedGuaranteedBitrateType.clean_up(); } if (other_value.altSupportedGuaranteedBitrates().is_bound()) { if (other_value.altSupportedGuaranteedBitrates().ispresent()) single_value->field_altSupportedGuaranteedBitrates = other_value.altSupportedGuaranteedBitrates()(); else single_value->field_altSupportedGuaranteedBitrates = OMIT_VALUE; } else { single_value->field_altSupportedGuaranteedBitrates.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::copy_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.altSupportedGuaranteedBitrateType().get_selection()) { single_value->field_altSupportedGuaranteedBitrateType = other_value.altSupportedGuaranteedBitrateType(); } else { single_value->field_altSupportedGuaranteedBitrateType.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.altSupportedGuaranteedBitrates().get_selection()) { single_value->field_altSupportedGuaranteedBitrates = other_value.altSupportedGuaranteedBitrates(); } else { single_value->field_altSupportedGuaranteedBitrates.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); break; } set_selection(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template() { } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) { copy_value(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf from an unbound optional field."); } } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template* p_precondition, Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& other_value) : Base_Template() { copy_template(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::~Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template() { clean_up(); } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); } return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::match(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.altSupportedGuaranteedBitrateType().is_bound()) return FALSE; if(!single_value->field_altSupportedGuaranteedBitrateType.match(other_value.altSupportedGuaranteedBitrateType(), legacy))return FALSE; if(!other_value.altSupportedGuaranteedBitrates().is_bound()) return FALSE; if((other_value.altSupportedGuaranteedBitrates().ispresent() ? !single_value->field_altSupportedGuaranteedBitrates.match((const Alt__RAB__Parameter__SupportedGuaranteedBitrates&)other_value.altSupportedGuaranteedBitrates(), legacy) : !single_value->field_altSupportedGuaranteedBitrates.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); } return FALSE; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_altSupportedGuaranteedBitrateType.is_bound() || (single_value->field_altSupportedGuaranteedBitrates.is_omit() || single_value->field_altSupportedGuaranteedBitrates.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_altSupportedGuaranteedBitrateType.is_value() && (single_value->field_altSupportedGuaranteedBitrates.is_omit() || single_value->field_altSupportedGuaranteedBitrates.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); Alt__RAB__Parameter__SupportedGuaranteedBitrateInf ret_val; if (single_value->field_altSupportedGuaranteedBitrateType.is_bound()) { ret_val.altSupportedGuaranteedBitrateType() = single_value->field_altSupportedGuaranteedBitrateType.valueof(); } if (single_value->field_altSupportedGuaranteedBitrates.is_omit()) ret_val.altSupportedGuaranteedBitrates() = OMIT_VALUE; else if (single_value->field_altSupportedGuaranteedBitrates.is_bound()) { ret_val.altSupportedGuaranteedBitrates() = single_value->field_altSupportedGuaranteedBitrates.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template[list_length]; } Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); return value_list.list_value[list_index]; } Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::altSupportedGuaranteedBitrateType() { set_specific(); return single_value->field_altSupportedGuaranteedBitrateType; } const Alt__RAB__Parameter__GuaranteedBitrateType_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::altSupportedGuaranteedBitrateType() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altSupportedGuaranteedBitrateType of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); return single_value->field_altSupportedGuaranteedBitrateType; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::altSupportedGuaranteedBitrates() { set_specific(); return single_value->field_altSupportedGuaranteedBitrates; } const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::altSupportedGuaranteedBitrates() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field altSupportedGuaranteedBitrates of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); return single_value->field_altSupportedGuaranteedBitrates; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); return single_value->field_iE__Extensions; } int Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_altSupportedGuaranteedBitrates.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); } return 0; } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ altSupportedGuaranteedBitrateType := "); single_value->field_altSupportedGuaranteedBitrateType.log(); TTCN_Logger::log_event_str(", altSupportedGuaranteedBitrates := "); single_value->field_altSupportedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::log_match(const Alt__RAB__Parameter__SupportedGuaranteedBitrateInf& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_altSupportedGuaranteedBitrateType.match(match_value.altSupportedGuaranteedBitrateType(), legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedGuaranteedBitrateType"); single_value->field_altSupportedGuaranteedBitrateType.log_match(match_value.altSupportedGuaranteedBitrateType(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.altSupportedGuaranteedBitrates().ispresent()){ if(!single_value->field_altSupportedGuaranteedBitrates.match(match_value.altSupportedGuaranteedBitrates(), legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedGuaranteedBitrates"); single_value->field_altSupportedGuaranteedBitrates.log_match(match_value.altSupportedGuaranteedBitrates(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_altSupportedGuaranteedBitrates.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".altSupportedGuaranteedBitrates := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_altSupportedGuaranteedBitrates.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ altSupportedGuaranteedBitrateType := "); single_value->field_altSupportedGuaranteedBitrateType.log_match(match_value.altSupportedGuaranteedBitrateType(), legacy); TTCN_Logger::log_event_str(", altSupportedGuaranteedBitrates := "); if (match_value.altSupportedGuaranteedBitrates().ispresent()) { single_value->field_altSupportedGuaranteedBitrates.log_match(match_value.altSupportedGuaranteedBitrates(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_altSupportedGuaranteedBitrates.log(); if (single_value->field_altSupportedGuaranteedBitrates.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (altSupportedGuaranteedBitrateType().is_bound()) altSupportedGuaranteedBitrateType().set_implicit_omit(); if (!altSupportedGuaranteedBitrates().is_bound()) altSupportedGuaranteedBitrates() = OMIT_VALUE; else altSupportedGuaranteedBitrates().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_altSupportedGuaranteedBitrateType.encode_text(text_buf); single_value->field_altSupportedGuaranteedBitrates.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_altSupportedGuaranteedBitrateType.decode_text(text_buf); single_value->field_altSupportedGuaranteedBitrates.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf."); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) altSupportedGuaranteedBitrateType().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) altSupportedGuaranteedBitrates().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedGuaranteedBitrateType")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedGuaranteedBitrateType().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "altSupportedGuaranteedBitrates")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { altSupportedGuaranteedBitrates().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template* precondition = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template* implied_template = new Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); } is_ifpresent = param.get_ifpresent(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_altSupportedGuaranteedBitrateType.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); single_value->field_altSupportedGuaranteedBitrates.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrateInf"); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrateInf_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } Alt__RAB__Parameter__SupportedGuaranteedBitrates::Alt__RAB__Parameter__SupportedGuaranteedBitrates(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } Alt__RAB__Parameter__SupportedGuaranteedBitrates::~Alt__RAB__Parameter__SupportedGuaranteedBitrates() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } Alt__RAB__Parameter__SupportedGuaranteedBitrates& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrates& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return val_ptr->n_elements == 0 ; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator==(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new SupportedRAB__ParameterBitrateList; } return *val_ptr->value_elements[index_value]; } SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return (*this)[(int)index_value]; } const SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const SupportedRAB__ParameterBitrateList& Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return (*this)[(int)index_value]; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; Alt__RAB__Parameter__SupportedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::operator+(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; Alt__RAB__Parameter__SupportedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new SupportedRAB__ParameterBitrateList(*other_value.val_ptr->value_elements[i]); } } return ret_val; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates","element"); Alt__RAB__Parameter__SupportedGuaranteedBitrates ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i+index]); } } return ret_val; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__SupportedGuaranteedBitrates& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates","element"); Alt__RAB__Parameter__SupportedGuaranteedBitrates ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new SupportedRAB__ParameterBitrateList(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new SupportedRAB__ParameterBitrateList(*val_ptr->value_elements[index+i+len]); } } return ret_val; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates::replace(int index, int len, const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return val_ptr->n_elements; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new SupportedRAB__ParameterBitrateList; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* Alt__RAB__Parameter__SupportedGuaranteedBitrates::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new SupportedRAB__ParameterBitrateList; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } SupportedRAB__ParameterBitrateList* val = new SupportedRAB__ParameterBitrateList; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (SupportedRAB__ParameterBitrateList**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int Alt__RAB__Parameter__SupportedGuaranteedBitrates::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::copy_value(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } } set_selection(SPECIFIC_VALUE); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::copy_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(*other_value.implication_.precondition); implication_.implied_template = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); break; } set_selection(other_value); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Alt__RAB__Parameter__SupportedGuaranteedBitrates*)value_ptr)[value_index], legacy); else return ((const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template() { } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) { copy_value(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedGuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates from an unbound optional field."); } } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(Alt__RAB__Parameter__SupportedGuaranteedBitrates_template* p_precondition, Alt__RAB__Parameter__SupportedGuaranteedBitrates_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::~Alt__RAB__Parameter__SupportedGuaranteedBitrates_template() { clean_up(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value) { clean_up(); copy_value(other_value); return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const Alt__RAB__Parameter__SupportedGuaranteedBitrates&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); } return *this; } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator=(const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); break; } return *single_value.value_elements[index_value]; } SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return (*this)[(int)index_value]; } const SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const SupportedRAB__ParameterBitrateList_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return (*this)[(int)index_value]; } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::match(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); } return FALSE; } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); Alt__RAB__Parameter__SupportedGuaranteedBitrates ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } Alt__RAB__Parameter__SupportedGuaranteedBitrates Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::replace(int index, int len, const Alt__RAB__Parameter__SupportedGuaranteedBitrates& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); } set_selection(template_type); } Alt__RAB__Parameter__SupportedGuaranteedBitrates_template& Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); return value_list.list_value[list_index]; } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::log_match(const Alt__RAB__Parameter__SupportedGuaranteedBitrates& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); single_value.value_elements = (SupportedRAB__ParameterBitrateList_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new SupportedRAB__ParameterBitrateList_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates."); } } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { Alt__RAB__Parameter__SupportedGuaranteedBitrates_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { Alt__RAB__Parameter__SupportedGuaranteedBitrates_template* precondition = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template; precondition->set_param(*param.get_elem(0)); Alt__RAB__Parameter__SupportedGuaranteedBitrates_template* implied_template = new Alt__RAB__Parameter__SupportedGuaranteedBitrates_template; implied_template->set_param(*param.get_elem(1)); *this = Alt__RAB__Parameter__SupportedGuaranteedBitrates_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.Alt-RAB-Parameter-SupportedGuaranteedBitrates"); } boolean Alt__RAB__Parameter__SupportedGuaranteedBitrates_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::UNBOUND_ELEM; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11() { val_ptr = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11(null_type) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst11"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst11_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst10"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst10_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst11"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst11_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean AlternativeRABConfigurationRequest::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return enum_value > other_value; } boolean AlternativeRABConfigurationRequest::operator>(const AlternativeRABConfigurationRequest& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return enum_value > other_value.enum_value; } const char *AlternativeRABConfigurationRequest::enum_to_str(enum_type enum_par) { switch (enum_par) { case alternative__RAB__configuration__Requested: return "alternative_RAB_configuration_Requested"; default: return ""; } } AlternativeRABConfigurationRequest::enum_type AlternativeRABConfigurationRequest::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "alternative_RAB_configuration_Requested")) return alternative__RAB__configuration__Requested; } return UNKNOWN_VALUE; } boolean AlternativeRABConfigurationRequest::is_valid_enum(int int_par) { switch (int_par) { case 0: return TRUE; default: return FALSE; } } int AlternativeRABConfigurationRequest::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int AlternativeRABConfigurationRequest::enum2int(const AlternativeRABConfigurationRequest& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void AlternativeRABConfigurationRequest::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", int_val); enum_value = (enum_type)int_val; } AlternativeRABConfigurationRequest::operator AlternativeRABConfigurationRequest::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return enum_value; } void AlternativeRABConfigurationRequest::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void AlternativeRABConfigurationRequest::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.AlternativeRABConfigurationRequest"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.AlternativeRABConfigurationRequest."); } } void AlternativeRABConfigurationRequest::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); text_buf.push_int(enum_value); } void AlternativeRABConfigurationRequest::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", enum_value); } void AlternativeRABConfigurationRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AlternativeRABConfigurationRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* AlternativeRABConfigurationRequest::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean AlternativeRABConfigurationRequest::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.AlternativeRABConfigurationRequest: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int AlternativeRABConfigurationRequest::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int AlternativeRABConfigurationRequest::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = alternative__RAB__configuration__Requested; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int AlternativeRABConfigurationRequest::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int AlternativeRABConfigurationRequest::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void AlternativeRABConfigurationRequest::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case alternative__RAB__configuration__Requested: enc_val = 0; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); } void AlternativeRABConfigurationRequest::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else enum_value = alternative__RAB__configuration__Requested; int dec_int = ext_bit ? (int)dec_val : 0; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } } void AlternativeRABConfigurationRequest_template::copy_template(const AlternativeRABConfigurationRequest_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new AlternativeRABConfigurationRequest_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new AlternativeRABConfigurationRequest_template(*other_value.implication_.precondition); implication_.implied_template = new AlternativeRABConfigurationRequest_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template() { } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!AlternativeRABConfigurationRequest::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest with unknown numeric value %d.", other_value); single_value = (AlternativeRABConfigurationRequest::enum_type)other_value; } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(AlternativeRABConfigurationRequest::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(const AlternativeRABConfigurationRequest& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == AlternativeRABConfigurationRequest::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); single_value = other_value.enum_value; } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (AlternativeRABConfigurationRequest::enum_type)(const AlternativeRABConfigurationRequest&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest from an unbound optional field."); } } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(AlternativeRABConfigurationRequest_template* p_precondition, AlternativeRABConfigurationRequest_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AlternativeRABConfigurationRequest_template::AlternativeRABConfigurationRequest_template(const AlternativeRABConfigurationRequest_template& other_value) : Base_Template() { copy_template(other_value); } AlternativeRABConfigurationRequest_template::~AlternativeRABConfigurationRequest_template() { clean_up(); } boolean AlternativeRABConfigurationRequest_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean AlternativeRABConfigurationRequest_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != AlternativeRABConfigurationRequest::UNBOUND_VALUE; } void AlternativeRABConfigurationRequest_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(int other_value) { if (!AlternativeRABConfigurationRequest::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (AlternativeRABConfigurationRequest::enum_type)other_value; return *this; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(AlternativeRABConfigurationRequest::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(const AlternativeRABConfigurationRequest& other_value) { if (other_value.enum_value == AlternativeRABConfigurationRequest::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (AlternativeRABConfigurationRequest::enum_type)(const AlternativeRABConfigurationRequest&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } return *this; } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::operator=(const AlternativeRABConfigurationRequest_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AlternativeRABConfigurationRequest_template::match(AlternativeRABConfigurationRequest::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } return FALSE; } boolean AlternativeRABConfigurationRequest_template::match(const AlternativeRABConfigurationRequest& other_value, boolean) const { if (other_value.enum_value == AlternativeRABConfigurationRequest::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest with an unbound value."); return match(other_value.enum_value); } AlternativeRABConfigurationRequest::enum_type AlternativeRABConfigurationRequest_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return single_value; } void AlternativeRABConfigurationRequest_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AlternativeRABConfigurationRequest_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } } AlternativeRABConfigurationRequest_template& AlternativeRABConfigurationRequest_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); return value_list.list_value[list_index]; } void AlternativeRABConfigurationRequest_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(AlternativeRABConfigurationRequest::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void AlternativeRABConfigurationRequest_template::log_match(const AlternativeRABConfigurationRequest& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void AlternativeRABConfigurationRequest_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } } void AlternativeRABConfigurationRequest_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (AlternativeRABConfigurationRequest::enum_type)text_buf.pull_int().get_val(); if (!AlternativeRABConfigurationRequest::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new AlternativeRABConfigurationRequest_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.AlternativeRABConfigurationRequest."); } } boolean AlternativeRABConfigurationRequest_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AlternativeRABConfigurationRequest_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { AlternativeRABConfigurationRequest_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { AlternativeRABConfigurationRequest::enum_type enum_val = AlternativeRABConfigurationRequest::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!AlternativeRABConfigurationRequest::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.AlternativeRABConfigurationRequest."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { AlternativeRABConfigurationRequest_template* precondition = new AlternativeRABConfigurationRequest_template; precondition->set_param(*m_p->get_elem(0)); AlternativeRABConfigurationRequest_template* implied_template = new AlternativeRABConfigurationRequest_template; implied_template->set_param(*m_p->get_elem(1)); *this = AlternativeRABConfigurationRequest_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.AlternativeRABConfigurationRequest"); } is_ifpresent = param.get_ifpresent(); } void AlternativeRABConfigurationRequest_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.AlternativeRABConfigurationRequest"); } void AreaScopeForUEApplicationLayerMeasurementConfiguration::copy_value(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) { switch (other_value.union_selection) { case ALT_cellbased: field_cellbased = new CellBased(*other_value.field_cellbased); break; case ALT_labased: field_labased = new LABased(*other_value.field_labased); break; case ALT_rabased: field_rabased = new RABased(*other_value.field_rabased); break; case ALT_plmn__area__based: field_plmn__area__based = new PLMNBased(*other_value.field_plmn__area__based); break; default: TTCN_error("Assignment of an unbound union value of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } union_selection = other_value.union_selection; } AreaScopeForUEApplicationLayerMeasurementConfiguration::AreaScopeForUEApplicationLayerMeasurementConfiguration() { union_selection = UNBOUND_VALUE; } AreaScopeForUEApplicationLayerMeasurementConfiguration::AreaScopeForUEApplicationLayerMeasurementConfiguration(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) : Base_Type(){ copy_value(other_value); } AreaScopeForUEApplicationLayerMeasurementConfiguration::~AreaScopeForUEApplicationLayerMeasurementConfiguration() { clean_up(); } AreaScopeForUEApplicationLayerMeasurementConfiguration& AreaScopeForUEApplicationLayerMeasurementConfiguration::operator=(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::operator==(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { case ALT_cellbased: return *field_cellbased == *other_value.field_cellbased; case ALT_labased: return *field_labased == *other_value.field_labased; case ALT_rabased: return *field_rabased == *other_value.field_rabased; case ALT_plmn__area__based: return *field_plmn__area__based == *other_value.field_plmn__area__based; default: return FALSE; } } CellBased& AreaScopeForUEApplicationLayerMeasurementConfiguration::cellbased() { if (union_selection != ALT_cellbased) { clean_up(); field_cellbased = new CellBased; union_selection = ALT_cellbased; } return *field_cellbased; } const CellBased& AreaScopeForUEApplicationLayerMeasurementConfiguration::cellbased() const { if (union_selection != ALT_cellbased) TTCN_error("Using non-selected field cellbased in a value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *field_cellbased; } LABased& AreaScopeForUEApplicationLayerMeasurementConfiguration::labased() { if (union_selection != ALT_labased) { clean_up(); field_labased = new LABased; union_selection = ALT_labased; } return *field_labased; } const LABased& AreaScopeForUEApplicationLayerMeasurementConfiguration::labased() const { if (union_selection != ALT_labased) TTCN_error("Using non-selected field labased in a value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *field_labased; } RABased& AreaScopeForUEApplicationLayerMeasurementConfiguration::rabased() { if (union_selection != ALT_rabased) { clean_up(); field_rabased = new RABased; union_selection = ALT_rabased; } return *field_rabased; } const RABased& AreaScopeForUEApplicationLayerMeasurementConfiguration::rabased() const { if (union_selection != ALT_rabased) TTCN_error("Using non-selected field rabased in a value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *field_rabased; } PLMNBased& AreaScopeForUEApplicationLayerMeasurementConfiguration::plmn__area__based() { if (union_selection != ALT_plmn__area__based) { clean_up(); field_plmn__area__based = new PLMNBased; union_selection = ALT_plmn__area__based; } return *field_plmn__area__based; } const PLMNBased& AreaScopeForUEApplicationLayerMeasurementConfiguration::plmn__area__based() const { if (union_selection != ALT_plmn__area__based) TTCN_error("Using non-selected field plmn_area_based in a value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *field_plmn__area__based; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return union_selection == checked_selection; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; case ALT_cellbased: return field_cellbased->is_value(); case ALT_labased: return field_labased->is_value(); case ALT_rabased: return field_rabased->is_value(); case ALT_plmn__area__based: return field_plmn__area__based->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void AreaScopeForUEApplicationLayerMeasurementConfiguration::clean_up() { switch (union_selection) { case ALT_cellbased: delete field_cellbased; break; case ALT_labased: delete field_labased; break; case ALT_rabased: delete field_rabased; break; case ALT_plmn__area__based: delete field_plmn__area__based; break; default: break; } union_selection = UNBOUND_VALUE; } void AreaScopeForUEApplicationLayerMeasurementConfiguration::log() const { switch (union_selection) { case ALT_cellbased: TTCN_Logger::log_event_str("{ cellbased := "); field_cellbased->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_labased: TTCN_Logger::log_event_str("{ labased := "); field_labased->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_rabased: TTCN_Logger::log_event_str("{ rabased := "); field_rabased->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_plmn__area__based: TTCN_Logger::log_event_str("{ plmn_area_based := "); field_plmn__area__based->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void AreaScopeForUEApplicationLayerMeasurementConfiguration::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "cellbased")) { cellbased().set_param(*mp_last); if (!cellbased().is_bound()) clean_up(); return; } if (!strcmp(last_name, "labased")) { labased().set_param(*mp_last); if (!labased().is_bound()) clean_up(); return; } if (!strcmp(last_name, "rabased")) { rabased().set_param(*mp_last); if (!rabased().is_bound()) clean_up(); return; } if (!strcmp(last_name, "plmn_area_based")) { plmn__area__based().set_param(*mp_last); if (!plmn__area__based().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.", last_name); } void AreaScopeForUEApplicationLayerMeasurementConfiguration::set_implicit_omit() { switch (union_selection) { case ALT_cellbased: field_cellbased->set_implicit_omit(); break; case ALT_labased: field_labased->set_implicit_omit(); break; case ALT_rabased: field_rabased->set_implicit_omit(); break; case ALT_plmn__area__based: field_plmn__area__based->set_implicit_omit(); break; default: break; } } void AreaScopeForUEApplicationLayerMeasurementConfiguration::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_cellbased: field_cellbased->encode_text(text_buf); break; case ALT_labased: field_labased->encode_text(text_buf); break; case ALT_rabased: field_rabased->encode_text(text_buf); break; case ALT_plmn__area__based: field_plmn__area__based->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } void AreaScopeForUEApplicationLayerMeasurementConfiguration::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_cellbased: cellbased().decode_text(text_buf); break; case ALT_labased: labased().decode_text(text_buf); break; case ALT_rabased: rabased().decode_text(text_buf); break; case ALT_plmn__area__based: plmn__area__based().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } void AreaScopeForUEApplicationLayerMeasurementConfiguration::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AreaScopeForUEApplicationLayerMeasurementConfiguration::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *AreaScopeForUEApplicationLayerMeasurementConfiguration::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case ALT_cellbased: ec_1.set_msg("cellbased': "); new_tlv = field_cellbased->BER_encode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_coding); break; case ALT_labased: ec_1.set_msg("labased': "); new_tlv = field_labased->BER_encode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_coding); break; case ALT_rabased: ec_1.set_msg("rabased': "); new_tlv = field_rabased->BER_encode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_coding); break; case ALT_plmn__area__based: ec_1.set_msg("plmn_area_based': "); new_tlv = field_plmn__area__based->BER_encode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_coding); break; case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); field_cellbased = new CellBased; union_selection = ALT_cellbased; if (field_cellbased->BER_decode_isMyMsg(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_tlv)) return TRUE; delete field_cellbased; field_labased = new LABased; union_selection = ALT_labased; if (field_labased->BER_decode_isMyMsg(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_tlv)) return TRUE; delete field_labased; field_rabased = new RABased; union_selection = ALT_rabased; if (field_rabased->BER_decode_isMyMsg(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_tlv)) return TRUE; delete field_rabased; field_plmn__area__based = new PLMNBased; union_selection = ALT_plmn__area__based; if (field_plmn__area__based->BER_decode_isMyMsg(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_tlv)) return TRUE; delete field_plmn__area__based; union_selection = UNBOUND_VALUE; return FALSE; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { AreaScopeForUEApplicationLayerMeasurementConfiguration tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration' type: "); ASN_BER_TLV_t tmp_tlv; if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tmp_tlv) || !BER_decode_CHOICE_selection(BER_decode_set_selection(tmp_tlv), tmp_tlv)) return FALSE; TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; switch (union_selection) { case ALT_cellbased: ec_2.set_msg("cellbased': "); field_cellbased->BER_decode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, tmp_tlv, L_form); break; case ALT_labased: ec_2.set_msg("labased': "); field_labased->BER_decode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, tmp_tlv, L_form); break; case ALT_rabased: ec_2.set_msg("rabased': "); field_rabased->BER_decode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, tmp_tlv, L_form); break; case ALT_plmn__area__based: ec_2.set_msg("plmn_area_based': "); field_plmn__area__based->BER_decode_TLV(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, tmp_tlv, L_form); break; default: return FALSE; } return TRUE; } int AreaScopeForUEApplicationLayerMeasurementConfiguration::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { boolean as_value = p_td.json->as_value; int enc_len = as_value ? 0 : p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); switch(union_selection) { case ALT_cellbased: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "cellbased"); } enc_len += field_cellbased->JSON_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_tok, FALSE); break; case ALT_labased: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "labased"); } enc_len += field_labased->JSON_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_tok, FALSE); break; case ALT_rabased: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rabased"); } enc_len += field_rabased->JSON_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_tok, FALSE); break; case ALT_plmn__area__based: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "plmn_area_based"); } enc_len += field_plmn__area__based->JSON_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_tok, FALSE); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return -1; } if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } return enc_len; } int AreaScopeForUEApplicationLayerMeasurementConfiguration::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { if (0 <= p_chosen_field && 4 > p_chosen_field) { switch (p_chosen_field) { case 0: return cellbased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_tok, TRUE, FALSE); case 1: return labased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_tok, TRUE, FALSE); case 2: return rabased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_tok, TRUE, FALSE); case 3: return plmn__area__based().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_tok, TRUE, FALSE); } } if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; if (p_td.json->as_value) { size_t buf_pos = p_tok.get_buf_pos(); p_tok.get_next_token(&j_token, NULL, NULL); int ret_val = 0; switch(j_token) { case JSON_TOKEN_NUMBER: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "number '@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_STRING: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "string '@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_TRUE: case JSON_TOKEN_LITERAL_FALSE: { char* literal_str = mprintf("literal (%s)", (JSON_TOKEN_LITERAL_TRUE == j_token) ? "true" : "false"); try { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, literal_str); } catch (const TC_Error&) { Free(literal_str); throw; } Free(literal_str); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_ARRAY_START: { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "array '@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_OBJECT_START: { p_tok.set_buf_pos(buf_pos); ret_val = cellbased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = labased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = rabased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = plmn__area__based().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "object '@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_NULL: { clean_up(); return JSON_ERROR_INVALID_TOKEN; } case JSON_TOKEN_ERROR: JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; default: return JSON_ERROR_INVALID_TOKEN; } return ret_val; } else { size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } char* fld_name = 0; size_t name_len = 0; dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_NAME != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else { if (9 == name_len && 0 == strncmp(fld_name, "cellbased", name_len)) { int ret_val = cellbased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 9, "cellbased"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (7 == name_len && 0 == strncmp(fld_name, "labased", name_len)) { int ret_val = labased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "labased"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (7 == name_len && 0 == strncmp(fld_name, "rabased", name_len)) { int ret_val = rabased().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "rabased"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (15 == name_len && 0 == strncmp(fld_name, "plmn_area_based", name_len)) { int ret_val = plmn__area__based().JSON_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 15, "plmn_area_based"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_STATIC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } return (int)dec_len; } } int AreaScopeForUEApplicationLayerMeasurementConfiguration::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { case ALT_cellbased: {TTCN_Buffer buf; encode_oer_tag(*AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_.ber, p_buf); field_cellbased->OER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, buf); p_buf.put_buf(buf); break; } case ALT_labased: {TTCN_Buffer buf; encode_oer_tag(*AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_.ber, p_buf); field_labased->OER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, buf); p_buf.put_buf(buf); break; } case ALT_rabased: {TTCN_Buffer buf; encode_oer_tag(*AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_.ber, p_buf); field_rabased->OER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, buf); p_buf.put_buf(buf); break; } case ALT_plmn__area__based: {TTCN_Buffer buf; encode_oer_tag(*AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_.ber, p_buf); field_plmn__area__based->OER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, buf); p_buf.put_buf(buf); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return -1; } return 0; } int AreaScopeForUEApplicationLayerMeasurementConfiguration::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const ASN_Tag_t& descr = decode_oer_tag(p_buf); if (AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { cellbased().OER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_buf, p_oer); } else if (AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { labased().OER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_buf, p_oer); } else if (AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { rabased().OER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_buf, p_oer); } else if (AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_.ber->tags[AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { plmn__area__based().OER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_buf, p_oer); } else { TTCN_error("Cannot find matching tag for type AreaScopeForUEApplicationLayerMeasurementConfiguration"); } return 0; } void AreaScopeForUEApplicationLayerMeasurementConfiguration::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound CHOICE value."); return; } p_buf.PER_put_bit(FALSE); switch (union_selection) { case ALT_cellbased: { INTEGER::PER_encode_int(p_buf, 0, 2); field_cellbased->PER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_buf, p_options); break; } case ALT_labased: { INTEGER::PER_encode_int(p_buf, 1, 2); field_labased->PER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_buf, p_options); break; } case ALT_rabased: { INTEGER::PER_encode_int(p_buf, 2, 2); field_rabased->PER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_buf, p_options); break; } case ALT_plmn__area__based: { INTEGER::PER_encode_int(p_buf, 3, 2); field_plmn__area__based->PER_encode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_buf, p_options); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Internal error: Invalid CHOICE selection, expected an extension root field."); break; } } void AreaScopeForUEApplicationLayerMeasurementConfiguration::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) { INTEGER sel_code; sel_code.PER_decode_normally_small(p_buf, p_options); PER_skip_opentype(p_buf, p_options); } else { int sel_int; INTEGER::PER_decode_int(p_buf, 2, FALSE, sel_int); switch (sel_int) { case 0: cellbased().PER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_cellbased_descr_, p_buf, p_options); break; case 1: labased().PER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_labased_descr_, p_buf, p_options); break; case 2: rabased().PER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_rabased_descr_, p_buf, p_options); break; case 3: plmn__area__based().PER_decode(AreaScopeForUEApplicationLayerMeasurementConfiguration_plmn__area__based_descr_, p_buf, p_options); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid CHOICE selection (%d).", sel_int); break; } } } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::copy_value(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased = new CellBased_template(other_value.cellbased()); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased = new LABased_template(other_value.labased()); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased = new RABased_template(other_value.rabased()); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based = new PLMNBased_template(other_value.plmn__area__based()); break; default: TTCN_error("Initializing a template with an unbound value of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } set_selection(SPECIFIC_VALUE); } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::copy_template(const AreaScopeForUEApplicationLayerMeasurementConfiguration_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased = new CellBased_template(*other_value.single_value.field_cellbased); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased = new LABased_template(*other_value.single_value.field_labased); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased = new RABased_template(*other_value.single_value.field_rabased); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based = new PLMNBased_template(*other_value.single_value.field_plmn__area__based); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template(*other_value.implication_.precondition); implication_.implied_template = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } set_selection(other_value); } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template() { } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) { copy_value(other_value); } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AreaScopeForUEApplicationLayerMeasurementConfiguration&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration from an unbound optional field."); } } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(AreaScopeForUEApplicationLayerMeasurementConfiguration_template* p_precondition, AreaScopeForUEApplicationLayerMeasurementConfiguration_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::AreaScopeForUEApplicationLayerMeasurementConfiguration_template(const AreaScopeForUEApplicationLayerMeasurementConfiguration_template& other_value) : Base_Template(){ copy_template(other_value); } AreaScopeForUEApplicationLayerMeasurementConfiguration_template::~AreaScopeForUEApplicationLayerMeasurementConfiguration_template() { clean_up(); } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: delete single_value.field_cellbased; break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: delete single_value.field_labased; break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: delete single_value.field_rabased; break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: delete single_value.field_plmn__area__based; default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::operator=(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value) { clean_up(); copy_value(other_value); return *this; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AreaScopeForUEApplicationLayerMeasurementConfiguration&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } return *this; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::operator=(const AreaScopeForUEApplicationLayerMeasurementConfiguration_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration_template::match(const AreaScopeForUEApplicationLayerMeasurementConfiguration& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { AreaScopeForUEApplicationLayerMeasurementConfiguration::union_selection_type value_selection = other_value.get_selection(); if (value_selection == AreaScopeForUEApplicationLayerMeasurementConfiguration::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: return single_value.field_cellbased->match(other_value.cellbased(), legacy); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: return single_value.field_labased->match(other_value.labased(), legacy); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: return single_value.field_rabased->match(other_value.rabased(), legacy); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: return single_value.field_plmn__area__based->match(other_value.plmn__area__based(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } return FALSE; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: return single_value.field_cellbased->is_value(); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: return single_value.field_labased->is_value(); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: return single_value.field_rabased->is_value(); case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: return single_value.field_plmn__area__based->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } AreaScopeForUEApplicationLayerMeasurementConfiguration AreaScopeForUEApplicationLayerMeasurementConfiguration_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); AreaScopeForUEApplicationLayerMeasurementConfiguration ret_val; switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: ret_val.cellbased() = single_value.field_cellbased->valueof(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: ret_val.labased() = single_value.field_labased->valueof(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: ret_val.rabased() = single_value.field_rabased->valueof(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: ret_val.plmn__area__based() = single_value.field_plmn__area__based->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } return ret_val; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return value_list.list_value[list_index]; } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template[list_length]; } CellBased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::cellbased() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_cellbased = new CellBased_template(ANY_VALUE); else single_value.field_cellbased = new CellBased_template; single_value.union_selection = AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased; set_selection(SPECIFIC_VALUE); } return *single_value.field_cellbased; } const CellBased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::cellbased() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field cellbased in a non-specific template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased) TTCN_error("Accessing non-selected field cellbased in a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *single_value.field_cellbased; } LABased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::labased() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_labased = new LABased_template(ANY_VALUE); else single_value.field_labased = new LABased_template; single_value.union_selection = AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased; set_selection(SPECIFIC_VALUE); } return *single_value.field_labased; } const LABased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::labased() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field labased in a non-specific template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased) TTCN_error("Accessing non-selected field labased in a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *single_value.field_labased; } RABased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::rabased() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rabased = new RABased_template(ANY_VALUE); else single_value.field_rabased = new RABased_template; single_value.union_selection = AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased; set_selection(SPECIFIC_VALUE); } return *single_value.field_rabased; } const RABased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::rabased() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rabased in a non-specific template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased) TTCN_error("Accessing non-selected field rabased in a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *single_value.field_rabased; } PLMNBased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::plmn__area__based() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_plmn__area__based = new PLMNBased_template(ANY_VALUE); else single_value.field_plmn__area__based = new PLMNBased_template; single_value.union_selection = AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based; set_selection(SPECIFIC_VALUE); } return *single_value.field_plmn__area__based; } const PLMNBased_template& AreaScopeForUEApplicationLayerMeasurementConfiguration_template::plmn__area__based() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field plmn_area_based in a non-specific template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); if (single_value.union_selection != AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based) TTCN_error("Accessing non-selected field plmn_area_based in a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return *single_value.field_plmn__area__based; } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration_template::ischosen(AreaScopeForUEApplicationLayerMeasurementConfiguration::union_selection_type checked_selection) const { if (checked_selection == AreaScopeForUEApplicationLayerMeasurementConfiguration::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == AreaScopeForUEApplicationLayerMeasurementConfiguration::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: TTCN_Logger::log_event_str("{ cellbased := "); single_value.field_cellbased->log(); TTCN_Logger::log_event_str(" }"); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: TTCN_Logger::log_event_str("{ labased := "); single_value.field_labased->log(); TTCN_Logger::log_event_str(" }"); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: TTCN_Logger::log_event_str("{ rabased := "); single_value.field_rabased->log(); TTCN_Logger::log_event_str(" }"); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: TTCN_Logger::log_event_str("{ plmn_area_based := "); single_value.field_plmn__area__based->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::log_match(const AreaScopeForUEApplicationLayerMeasurementConfiguration& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".cellbased"); single_value.field_cellbased->log_match(match_value.cellbased(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ cellbased := "); single_value.field_cellbased->log_match(match_value.cellbased(), legacy); TTCN_Logger::log_event_str(" }"); } break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".labased"); single_value.field_labased->log_match(match_value.labased(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ labased := "); single_value.field_labased->log_match(match_value.labased(), legacy); TTCN_Logger::log_event_str(" }"); } break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".rabased"); single_value.field_rabased->log_match(match_value.rabased(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ rabased := "); single_value.field_rabased->log_match(match_value.rabased(), legacy); TTCN_Logger::log_event_str(" }"); } break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".plmn_area_based"); single_value.field_plmn__area__based->log_match(match_value.plmn__area__based(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ plmn_area_based := "); single_value.field_plmn__area__based->log_match(match_value.plmn__area__based(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased->set_implicit_omit(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased->set_implicit_omit(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased->set_implicit_omit(); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based->set_implicit_omit(); break; default: break; } } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased->encode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased->encode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased->encode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = AreaScopeForUEApplicationLayerMeasurementConfiguration::UNBOUND_VALUE; AreaScopeForUEApplicationLayerMeasurementConfiguration::union_selection_type new_selection = (AreaScopeForUEApplicationLayerMeasurementConfiguration::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased = new CellBased_template; single_value.field_cellbased->decode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased = new LABased_template; single_value.field_labased->decode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased = new RABased_template; single_value.field_rabased->decode_text(text_buf); break; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based = new PLMNBased_template; single_value.field_plmn__area__based->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AreaScopeForUEApplicationLayerMeasurementConfiguration_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'"); } if (strcmp("cellbased", param_field) == 0) { cellbased().set_param(param); return; } else if (strcmp("labased", param_field) == 0) { labased().set_param(param); return; } else if (strcmp("rabased", param_field) == 0) { rabased().set_param(param); return; } else if (strcmp("plmn_area_based", param_field) == 0) { plmn__area__based().set_param(param); return; } else param.error("Field `%s' not found in union template type `@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { AreaScopeForUEApplicationLayerMeasurementConfiguration_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "cellbased")) { cellbased().set_param(*mp_last); break; } if (!strcmp(last_name, "labased")) { labased().set_param(*mp_last); break; } if (!strcmp(last_name, "rabased")) { rabased().set_param(*mp_last); break; } if (!strcmp(last_name, "plmn_area_based")) { plmn__area__based().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration.", last_name); } break; case Module_Param::MP_Implication_Template: { AreaScopeForUEApplicationLayerMeasurementConfiguration_template* precondition = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template; precondition->set_param(*m_p->get_elem(0)); AreaScopeForUEApplicationLayerMeasurementConfiguration_template* implied_template = new AreaScopeForUEApplicationLayerMeasurementConfiguration_template; implied_template->set_param(*m_p->get_elem(1)); *this = AreaScopeForUEApplicationLayerMeasurementConfiguration_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); } is_ifpresent = param.get_ifpresent(); } void AreaScopeForUEApplicationLayerMeasurementConfiguration_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_cellbased: single_value.field_cellbased->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); return; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_labased: single_value.field_labased->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); return; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_rabased: single_value.field_rabased->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); return; case AreaScopeForUEApplicationLayerMeasurementConfiguration::ALT_plmn__area__based: single_value.field_plmn__area__based->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.AreaScopeForUEApplicationLayerMeasurementConfiguration"); } CellBased::CellBased() { } CellBased::CellBased(const CellIdList& par_cellIdList, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 >& par_iE__Extensions) : field_cellIdList(par_cellIdList), field_iE__Extensions(par_iE__Extensions) { } CellBased::CellBased(const CellBased& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.CellBased."); if (other_value.cellIdList().is_bound()) field_cellIdList = other_value.cellIdList(); else field_cellIdList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void CellBased::clean_up() { field_cellIdList.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* CellBased::get_descriptor() const { return &CellBased_descr_; } CellBased& CellBased::operator=(const CellBased& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.CellBased."); if (other_value.cellIdList().is_bound()) field_cellIdList = other_value.cellIdList(); else field_cellIdList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean CellBased::operator==(const CellBased& other_value) const { return field_cellIdList==other_value.field_cellIdList && field_iE__Extensions==other_value.field_iE__Extensions; } boolean CellBased::is_bound() const { return (field_cellIdList.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean CellBased::is_value() const { return field_cellIdList.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int CellBased::size_of() const { int ret_val = 1; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void CellBased::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ cellIdList := "); field_cellIdList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void CellBased::set_implicit_omit() { if (cellIdList().is_bound()) cellIdList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void CellBased::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) cellIdList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "cellIdList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { cellIdList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.CellBased: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.CellBased"); } } void CellBased::encode_text(Text_Buf& text_buf) const { field_cellIdList.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void CellBased::decode_text(Text_Buf& text_buf) { field_cellIdList.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void CellBased::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void CellBased::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* CellBased::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("cellIdList': "); new_tlv->add_TLV(field_cellIdList.BER_encode_TLV(CellBased_cellIdList_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(CellBased_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean CellBased::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.CellBased' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("cellIdList': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_cellIdList.BER_decode_TLV(CellBased_cellIdList_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(CellBased_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int CellBased::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.CellBased."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "cellIdList"); enc_len += field_cellIdList.JSON_encode(CellBased_cellIdList_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(CellBased_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int CellBased::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean cellIdList_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (10 == name_len && 0 == strncmp(fld_name, "cellIdList", name_len)) { cellIdList_found = TRUE; int ret_val = field_cellIdList.JSON_decode(CellBased_cellIdList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 10, "cellIdList"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(CellBased_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!cellIdList_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "cellIdList"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int CellBased::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_cellIdList.OER_encode(CellBased_cellIdList_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(CellBased_iE__Extensions_descr_, p_buf); return 0; } int CellBased::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_cellIdList.OER_decode(CellBased_cellIdList_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(CellBased_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void CellBased::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_cellIdList.PER_encode(CellBased_cellIdList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(CellBased_iE__Extensions_descr_, p_buf, p_options); } void CellBased::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_cellIdList.PER_decode(CellBased_cellIdList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(CellBased_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct CellBased_template::single_value_struct { CellIdList_template field_cellIdList; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template field_iE__Extensions; }; void CellBased_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_cellIdList = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void CellBased_template::copy_value(const CellBased& other_value) { single_value = new single_value_struct; if (other_value.cellIdList().is_bound()) { single_value->field_cellIdList = other_value.cellIdList(); } else { single_value->field_cellIdList.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void CellBased_template::copy_template(const CellBased_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.cellIdList().get_selection()) { single_value->field_cellIdList = other_value.cellIdList(); } else { single_value->field_cellIdList.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new CellBased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new CellBased_template(*other_value.implication_.precondition); implication_.implied_template = new CellBased_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.CellBased."); break; } set_selection(other_value); } CellBased_template::CellBased_template() { } CellBased_template::CellBased_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } CellBased_template::CellBased_template(const CellBased& other_value) { copy_value(other_value); } CellBased_template::CellBased_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const CellBased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.CellBased from an unbound optional field."); } } CellBased_template::CellBased_template(CellBased_template* p_precondition, CellBased_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } CellBased_template::CellBased_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } CellBased_template::CellBased_template(const CellBased_template& other_value) : Base_Template() { copy_template(other_value); } CellBased_template::~CellBased_template() { clean_up(); } CellBased_template& CellBased_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } CellBased_template& CellBased_template::operator=(const CellBased& other_value) { clean_up(); copy_value(other_value); return *this; } CellBased_template& CellBased_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const CellBased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.CellBased."); } return *this; } CellBased_template& CellBased_template::operator=(const CellBased_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean CellBased_template::match(const CellBased& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.cellIdList().is_bound()) return FALSE; if(!single_value->field_cellIdList.match(other_value.cellIdList(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.CellBased."); } return FALSE; } boolean CellBased_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_cellIdList.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean CellBased_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_cellIdList.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void CellBased_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } CellBased CellBased_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.CellBased."); CellBased ret_val; if (single_value->field_cellIdList.is_bound()) { ret_val.cellIdList() = single_value->field_cellIdList.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void CellBased_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.CellBased."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new CellBased_template[list_length]; } CellBased_template& CellBased_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.CellBased."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.CellBased."); return value_list.list_value[list_index]; } CellIdList_template& CellBased_template::cellIdList() { set_specific(); return single_value->field_cellIdList; } const CellIdList_template& CellBased_template::cellIdList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field cellIdList of a non-specific template of type @RANAP-IEs.CellBased."); return single_value->field_cellIdList; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& CellBased_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& CellBased_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.CellBased."); return single_value->field_iE__Extensions; } int CellBased_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.CellBased containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.CellBased."); } return 0; } void CellBased_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ cellIdList := "); single_value->field_cellIdList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void CellBased_template::log_match(const CellBased& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_cellIdList.match(match_value.cellIdList(), legacy)){ TTCN_Logger::log_logmatch_info(".cellIdList"); single_value->field_cellIdList.log_match(match_value.cellIdList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ cellIdList := "); single_value->field_cellIdList.log_match(match_value.cellIdList(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void CellBased_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (cellIdList().is_bound()) cellIdList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void CellBased_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_cellIdList.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.CellBased."); } } void CellBased_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_cellIdList.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new CellBased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.CellBased."); } } void CellBased_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { CellBased_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) cellIdList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "cellIdList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { cellIdList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.CellBased: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { CellBased_template* precondition = new CellBased_template; precondition->set_param(*param.get_elem(0)); CellBased_template* implied_template = new CellBased_template; implied_template->set_param(*param.get_elem(1)); *this = CellBased_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.CellBased"); } is_ifpresent = param.get_ifpresent(); } void CellBased_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_cellIdList.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.CellBased"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.CellBased"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.CellBased"); } boolean CellBased_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean CellBased_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst12"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst12_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst12"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst12_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } LAI__List::LAI__List(const LAI__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.LAI-List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } LAI__List::~LAI__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void LAI__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } LAI__List& LAI__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } LAI__List& LAI__List::operator=(const LAI__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.LAI-List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean LAI__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.LAI-List."); return val_ptr->n_elements == 0 ; } boolean LAI__List::operator==(const LAI__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.LAI-List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.LAI-List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } LAI& LAI__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.LAI-List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (LAI**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new LAI(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new LAI; } return *val_ptr->value_elements[index_value]; } LAI& LAI__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.LAI-List."); return (*this)[(int)index_value]; } const LAI& LAI__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.LAI-List."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.LAI-List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.LAI-List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const LAI& LAI__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.LAI-List."); return (*this)[(int)index_value]; } LAI__List LAI__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } LAI__List LAI__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } LAI__List LAI__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } LAI__List LAI__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.LAI-List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; LAI__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new LAI(*val_ptr->value_elements[i]); } } return ret_val; } LAI__List LAI__List::operator+(const LAI__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.LAI-List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; LAI__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new LAI(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new LAI(*other_value.val_ptr->value_elements[i]); } } return ret_val; } LAI__List LAI__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.LAI-List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.LAI-List","element"); LAI__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new LAI(*val_ptr->value_elements[i+index]); } } return ret_val; } LAI__List LAI__List::replace(int index, int len, const LAI__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.LAI-List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.LAI-List."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.LAI-List","element"); LAI__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new LAI(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new LAI(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new LAI(*val_ptr->value_elements[index+i+len]); } } return ret_val; } LAI__List LAI__List::replace(int index, int len, const LAI__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void LAI__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.LAI-List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (LAI**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new LAI(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (LAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.LAI-List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (LAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean LAI__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int LAI__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.LAI-List."); return val_ptr->n_elements; } int LAI__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.LAI-List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void LAI__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void LAI__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void LAI__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.LAI-List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.LAI-List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void LAI__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.LAI-List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void LAI__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.LAI-List."); val_ptr->value_elements = (LAI**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new LAI; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void LAI__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void LAI__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* LAI__List::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean LAI__List::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (LAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new LAI; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int LAI__List::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.LAI-List."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int LAI__List::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } LAI* val = new LAI; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (LAI**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int LAI__List::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.LAI-List."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int LAI__List::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void LAI__List::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void LAI__List::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void LAI__List_template::copy_value(const LAI__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.LAI-List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (LAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new LAI_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new LAI_template; } } set_selection(SPECIFIC_VALUE); } void LAI__List_template::copy_template(const LAI__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (LAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new LAI_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new LAI_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new LAI__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new LAI__List_template(*other_value.implication_.precondition); implication_.implied_template = new LAI__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.LAI-List."); break; } set_selection(other_value); } boolean LAI__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const LAI__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const LAI__List*)value_ptr)[value_index], legacy); else return ((const LAI__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } LAI__List_template::LAI__List_template() { } LAI__List_template::LAI__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } LAI__List_template::LAI__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } LAI__List_template::LAI__List_template(const LAI__List& other_value) { copy_value(other_value); } LAI__List_template::LAI__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LAI__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.LAI-List from an unbound optional field."); } } LAI__List_template::LAI__List_template(LAI__List_template* p_precondition, LAI__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } LAI__List_template::LAI__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } LAI__List_template::LAI__List_template(const LAI__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } LAI__List_template::~LAI__List_template() { clean_up(); } void LAI__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } LAI__List_template& LAI__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } LAI__List_template& LAI__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } LAI__List_template& LAI__List_template::operator=(const LAI__List& other_value) { clean_up(); copy_value(other_value); return *this; } LAI__List_template& LAI__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LAI__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.LAI-List."); } return *this; } LAI__List_template& LAI__List_template::operator=(const LAI__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } LAI_template& LAI__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.LAI-List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.LAI-List."); break; } return *single_value.value_elements[index_value]; } LAI_template& LAI__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.LAI-List."); return (*this)[(int)index_value]; } const LAI_template& LAI__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.LAI-List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.LAI-List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.LAI-List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const LAI_template& LAI__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.LAI-List."); return (*this)[(int)index_value]; } void LAI__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.LAI-List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (LAI_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new LAI_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new LAI_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (LAI_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int LAI__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int LAI__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.LAI-List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.LAI-List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.LAI-List"); } boolean LAI__List_template::match(const LAI__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.LAI-List."); } return FALSE; } boolean LAI__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } LAI__List LAI__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.LAI-List."); LAI__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } LAI__List LAI__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } LAI__List LAI__List_template::replace(int index, int len, const LAI__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } LAI__List LAI__List_template::replace(int index, int len, const LAI__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void LAI__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new LAI__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.LAI-List."); } set_selection(template_type); } LAI__List_template& LAI__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.LAI-List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.LAI-List."); return value_list.list_value[list_index]; } void LAI__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void LAI__List_template::log_match(const LAI__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void LAI__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.LAI-List."); } } void LAI__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.LAI-List."); single_value.value_elements = (LAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new LAI_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new LAI__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.LAI-List."); } } boolean LAI__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean LAI__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void LAI__List_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { LAI__List_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { LAI__List_template* precondition = new LAI__List_template; precondition->set_param(*param.get_elem(0)); LAI__List_template* implied_template = new LAI__List_template; implied_template->set_param(*param.get_elem(1)); *this = LAI__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.LAI-List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void LAI__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LAI-List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.LAI-List"); } boolean LAI__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } LABased::LABased() { } LABased::LABased(const LAI__List& par_laiList, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 >& par_iE__Extensions) : field_laiList(par_laiList), field_iE__Extensions(par_iE__Extensions) { } LABased::LABased(const LABased& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.LABased."); if (other_value.laiList().is_bound()) field_laiList = other_value.laiList(); else field_laiList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void LABased::clean_up() { field_laiList.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* LABased::get_descriptor() const { return &LABased_descr_; } LABased& LABased::operator=(const LABased& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.LABased."); if (other_value.laiList().is_bound()) field_laiList = other_value.laiList(); else field_laiList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean LABased::operator==(const LABased& other_value) const { return field_laiList==other_value.field_laiList && field_iE__Extensions==other_value.field_iE__Extensions; } boolean LABased::is_bound() const { return (field_laiList.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean LABased::is_value() const { return field_laiList.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int LABased::size_of() const { int ret_val = 1; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void LABased::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ laiList := "); field_laiList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void LABased::set_implicit_omit() { if (laiList().is_bound()) laiList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void LABased::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) laiList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "laiList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { laiList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.LABased: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.LABased"); } } void LABased::encode_text(Text_Buf& text_buf) const { field_laiList.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void LABased::decode_text(Text_Buf& text_buf) { field_laiList.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void LABased::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void LABased::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* LABased::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("laiList': "); new_tlv->add_TLV(field_laiList.BER_encode_TLV(LABased_laiList_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(LABased_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean LABased::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.LABased' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("laiList': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_laiList.BER_decode_TLV(LABased_laiList_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(LABased_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int LABased::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.LABased."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "laiList"); enc_len += field_laiList.JSON_encode(LABased_laiList_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(LABased_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int LABased::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean laiList_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (7 == name_len && 0 == strncmp(fld_name, "laiList", name_len)) { laiList_found = TRUE; int ret_val = field_laiList.JSON_decode(LABased_laiList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "laiList"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(LABased_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!laiList_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "laiList"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int LABased::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_laiList.OER_encode(LABased_laiList_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(LABased_iE__Extensions_descr_, p_buf); return 0; } int LABased::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_laiList.OER_decode(LABased_laiList_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(LABased_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void LABased::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_laiList.PER_encode(LABased_laiList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(LABased_iE__Extensions_descr_, p_buf, p_options); } void LABased::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_laiList.PER_decode(LABased_laiList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(LABased_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct LABased_template::single_value_struct { LAI__List_template field_laiList; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template field_iE__Extensions; }; void LABased_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_laiList = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void LABased_template::copy_value(const LABased& other_value) { single_value = new single_value_struct; if (other_value.laiList().is_bound()) { single_value->field_laiList = other_value.laiList(); } else { single_value->field_laiList.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void LABased_template::copy_template(const LABased_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.laiList().get_selection()) { single_value->field_laiList = other_value.laiList(); } else { single_value->field_laiList.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new LABased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new LABased_template(*other_value.implication_.precondition); implication_.implied_template = new LABased_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.LABased."); break; } set_selection(other_value); } LABased_template::LABased_template() { } LABased_template::LABased_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } LABased_template::LABased_template(const LABased& other_value) { copy_value(other_value); } LABased_template::LABased_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LABased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.LABased from an unbound optional field."); } } LABased_template::LABased_template(LABased_template* p_precondition, LABased_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } LABased_template::LABased_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } LABased_template::LABased_template(const LABased_template& other_value) : Base_Template() { copy_template(other_value); } LABased_template::~LABased_template() { clean_up(); } LABased_template& LABased_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } LABased_template& LABased_template::operator=(const LABased& other_value) { clean_up(); copy_value(other_value); return *this; } LABased_template& LABased_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const LABased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.LABased."); } return *this; } LABased_template& LABased_template::operator=(const LABased_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean LABased_template::match(const LABased& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.laiList().is_bound()) return FALSE; if(!single_value->field_laiList.match(other_value.laiList(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.LABased."); } return FALSE; } boolean LABased_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_laiList.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean LABased_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_laiList.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void LABased_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } LABased LABased_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.LABased."); LABased ret_val; if (single_value->field_laiList.is_bound()) { ret_val.laiList() = single_value->field_laiList.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void LABased_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.LABased."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new LABased_template[list_length]; } LABased_template& LABased_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.LABased."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.LABased."); return value_list.list_value[list_index]; } LAI__List_template& LABased_template::laiList() { set_specific(); return single_value->field_laiList; } const LAI__List_template& LABased_template::laiList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field laiList of a non-specific template of type @RANAP-IEs.LABased."); return single_value->field_laiList; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& LABased_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& LABased_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.LABased."); return single_value->field_iE__Extensions; } int LABased_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.LABased containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.LABased."); } return 0; } void LABased_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ laiList := "); single_value->field_laiList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void LABased_template::log_match(const LABased& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_laiList.match(match_value.laiList(), legacy)){ TTCN_Logger::log_logmatch_info(".laiList"); single_value->field_laiList.log_match(match_value.laiList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ laiList := "); single_value->field_laiList.log_match(match_value.laiList(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void LABased_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (laiList().is_bound()) laiList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void LABased_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_laiList.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.LABased."); } } void LABased_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_laiList.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new LABased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.LABased."); } } void LABased_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { LABased_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) laiList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "laiList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { laiList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.LABased: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { LABased_template* precondition = new LABased_template; precondition->set_param(*param.get_elem(0)); LABased_template* implied_template = new LABased_template; implied_template->set_param(*param.get_elem(1)); *this = LABased_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.LABased"); } is_ifpresent = param.get_ifpresent(); } void LABased_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_laiList.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LABased"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.LABased"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.LABased"); } boolean LABased_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean LABased_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst13"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst13_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst13"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst13_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } RAI__List::RAI__List(const RAI__List& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.RAI-List."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } RAI__List::~RAI__List() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void RAI__List::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } RAI__List& RAI__List::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } RAI__List& RAI__List::operator=(const RAI__List& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.RAI-List."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean RAI__List::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.RAI-List."); return val_ptr->n_elements == 0 ; } boolean RAI__List::operator==(const RAI__List& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.RAI-List."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.RAI-List."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } RAI& RAI__List::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.RAI-List using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (RAI**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new RAI(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new RAI; } return *val_ptr->value_elements[index_value]; } RAI& RAI__List::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.RAI-List."); return (*this)[(int)index_value]; } const RAI& RAI__List::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.RAI-List."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.RAI-List using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.RAI-List: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const RAI& RAI__List::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.RAI-List."); return (*this)[(int)index_value]; } RAI__List RAI__List::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } RAI__List RAI__List::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } RAI__List RAI__List::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } RAI__List RAI__List::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.RAI-List."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; RAI__List ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new RAI(*val_ptr->value_elements[i]); } } return ret_val; } RAI__List RAI__List::operator+(const RAI__List& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.RAI-List concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; RAI__List ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RAI(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new RAI(*other_value.val_ptr->value_elements[i]); } } return ret_val; } RAI__List RAI__List::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.RAI-List."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.RAI-List","element"); RAI__List ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new RAI(*val_ptr->value_elements[i+index]); } } return ret_val; } RAI__List RAI__List::replace(int index, int len, const RAI__List& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.RAI-List."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.RAI-List."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.RAI-List","element"); RAI__List ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new RAI(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new RAI(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new RAI(*val_ptr->value_elements[index+i+len]); } } return ret_val; } RAI__List RAI__List::replace(int index, int len, const RAI__List_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void RAI__List::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.RAI-List."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (RAI**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new RAI(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (RAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.RAI-List: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (RAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean RAI__List::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int RAI__List::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.RAI-List."); return val_ptr->n_elements; } int RAI__List::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.RAI-List."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void RAI__List::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void RAI__List::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void RAI__List::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.RAI-List"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.RAI-List"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void RAI__List::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.RAI-List."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void RAI__List::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.RAI-List."); val_ptr->value_elements = (RAI**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new RAI; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void RAI__List::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RAI__List::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RAI__List::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RAI__List::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (RAI**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new RAI; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int RAI__List::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.RAI-List."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int RAI__List::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } RAI* val = new RAI; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (RAI**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int RAI__List::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.RAI-List."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int RAI__List::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void RAI__List::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void RAI__List::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void RAI__List_template::copy_value(const RAI__List& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.RAI-List with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (RAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new RAI_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new RAI_template; } } set_selection(SPECIFIC_VALUE); } void RAI__List_template::copy_template(const RAI__List_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (RAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new RAI_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new RAI_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RAI__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RAI__List_template(*other_value.implication_.precondition); implication_.implied_template = new RAI__List_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.RAI-List."); break; } set_selection(other_value); } boolean RAI__List_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const RAI__List_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const RAI__List*)value_ptr)[value_index], legacy); else return ((const RAI__List_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } RAI__List_template::RAI__List_template() { } RAI__List_template::RAI__List_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } RAI__List_template::RAI__List_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } RAI__List_template::RAI__List_template(const RAI__List& other_value) { copy_value(other_value); } RAI__List_template::RAI__List_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAI__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.RAI-List from an unbound optional field."); } } RAI__List_template::RAI__List_template(RAI__List_template* p_precondition, RAI__List_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RAI__List_template::RAI__List_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RAI__List_template::RAI__List_template(const RAI__List_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } RAI__List_template::~RAI__List_template() { clean_up(); } void RAI__List_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RAI__List_template& RAI__List_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RAI__List_template& RAI__List_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } RAI__List_template& RAI__List_template::operator=(const RAI__List& other_value) { clean_up(); copy_value(other_value); return *this; } RAI__List_template& RAI__List_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAI__List&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.RAI-List."); } return *this; } RAI__List_template& RAI__List_template::operator=(const RAI__List_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } RAI_template& RAI__List_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.RAI-List using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.RAI-List."); break; } return *single_value.value_elements[index_value]; } RAI_template& RAI__List_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.RAI-List."); return (*this)[(int)index_value]; } const RAI_template& RAI__List_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.RAI-List using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.RAI-List."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.RAI-List: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const RAI_template& RAI__List_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.RAI-List."); return (*this)[(int)index_value]; } void RAI__List_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.RAI-List."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (RAI_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new RAI_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new RAI_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (RAI_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int RAI__List_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int RAI__List_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.RAI-List containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.RAI-List.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.RAI-List"); } boolean RAI__List_template::match(const RAI__List& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.RAI-List."); } return FALSE; } boolean RAI__List_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } RAI__List RAI__List_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.RAI-List."); RAI__List ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } RAI__List RAI__List_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } RAI__List RAI__List_template::replace(int index, int len, const RAI__List_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } RAI__List RAI__List_template::replace(int index, int len, const RAI__List& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void RAI__List_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new RAI__List_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.RAI-List."); } set_selection(template_type); } RAI__List_template& RAI__List_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.RAI-List."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.RAI-List."); return value_list.list_value[list_index]; } void RAI__List_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void RAI__List_template::log_match(const RAI__List& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RAI__List_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.RAI-List."); } } void RAI__List_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.RAI-List."); single_value.value_elements = (RAI_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new RAI_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RAI__List_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.RAI-List."); } } boolean RAI__List_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RAI__List_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void RAI__List_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RAI__List_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { RAI__List_template* precondition = new RAI__List_template; precondition->set_param(*param.get_elem(0)); RAI__List_template* implied_template = new RAI__List_template; implied_template->set_param(*param.get_elem(1)); *this = RAI__List_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.RAI-List"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void RAI__List_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAI-List"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RAI-List"); } boolean RAI__List_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } RAI::RAI() { } RAI::RAI(const LAI& par_lAI, const OCTETSTRING& par_rAC, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 >& par_iE__Extensions) : field_lAI(par_lAI), field_rAC(par_rAC), field_iE__Extensions(par_iE__Extensions) { } RAI::RAI(const RAI& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.RAI."); if (other_value.lAI().is_bound()) field_lAI = other_value.lAI(); else field_lAI.clean_up(); if (other_value.rAC().is_bound()) field_rAC = other_value.rAC(); else field_rAC.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void RAI::clean_up() { field_lAI.clean_up(); field_rAC.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* RAI::get_descriptor() const { return &RAI_descr_; } RAI& RAI::operator=(const RAI& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.RAI."); if (other_value.lAI().is_bound()) field_lAI = other_value.lAI(); else field_lAI.clean_up(); if (other_value.rAC().is_bound()) field_rAC = other_value.rAC(); else field_rAC.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean RAI::operator==(const RAI& other_value) const { return field_lAI==other_value.field_lAI && field_rAC==other_value.field_rAC && field_iE__Extensions==other_value.field_iE__Extensions; } boolean RAI::is_bound() const { return (field_lAI.is_bound()) || (field_rAC.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean RAI::is_value() const { return field_lAI.is_value() && field_rAC.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int RAI::size_of() const { int ret_val = 2; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void RAI::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ lAI := "); field_lAI.log(); TTCN_Logger::log_event_str(", rAC := "); field_rAC.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void RAI::set_implicit_omit() { if (lAI().is_bound()) lAI().set_implicit_omit(); if (rAC().is_bound()) rAC().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RAI::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) lAI().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "lAI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lAI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RAI: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.RAI"); } } void RAI::encode_text(Text_Buf& text_buf) const { field_lAI.encode_text(text_buf); field_rAC.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void RAI::decode_text(Text_Buf& text_buf) { field_lAI.decode_text(text_buf); field_rAC.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void RAI::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RAI::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RAI::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("lAI': "); new_tlv->add_TLV(field_lAI.BER_encode_TLV(RAI_lAI_descr_, p_coding)); ec_1.set_msg("rAC': "); new_tlv->add_TLV(field_rAC.BER_encode_TLV(RAI_rAC_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(RAI_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RAI::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.RAI' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("lAI': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_lAI.BER_decode_TLV(RAI_lAI_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("rAC': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_rAC.BER_decode_TLV(RAI_rAC_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(RAI_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int RAI::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.RAI."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "lAI"); enc_len += field_lAI.JSON_encode(RAI_lAI_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "rAC"); enc_len += field_rAC.JSON_encode(RAI_rAC_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(RAI_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int RAI::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean lAI_found = FALSE; boolean rAC_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (3 == name_len && 0 == strncmp(fld_name, "lAI", name_len)) { lAI_found = TRUE; int ret_val = field_lAI.JSON_decode(RAI_lAI_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 3, "lAI"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (3 == name_len && 0 == strncmp(fld_name, "rAC", name_len)) { rAC_found = TRUE; int ret_val = field_rAC.JSON_decode(RAI_rAC_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 3, "rAC"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(RAI_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!lAI_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "lAI"); return JSON_ERROR_FATAL; } if (!rAC_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "rAC"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int RAI::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_lAI.OER_encode(RAI_lAI_descr_, p_buf); field_rAC.OER_encode(RAI_rAC_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(RAI_iE__Extensions_descr_, p_buf); return 0; } int RAI::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_lAI.OER_decode(RAI_lAI_descr_, p_buf, p_oer); field_rAC.OER_decode(RAI_rAC_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(RAI_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void RAI::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_lAI.PER_encode(RAI_lAI_descr_, p_buf, p_options); field_rAC.PER_encode(RAI_rAC_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(RAI_iE__Extensions_descr_, p_buf, p_options); } void RAI::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_lAI.PER_decode(RAI_lAI_descr_, p_buf, p_options); field_rAC.PER_decode(RAI_rAC_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(RAI_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct RAI_template::single_value_struct { LAI_template field_lAI; OCTETSTRING_template field_rAC; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template field_iE__Extensions; }; void RAI_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_lAI = ANY_VALUE; single_value->field_rAC = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void RAI_template::copy_value(const RAI& other_value) { single_value = new single_value_struct; if (other_value.lAI().is_bound()) { single_value->field_lAI = other_value.lAI(); } else { single_value->field_lAI.clean_up(); } if (other_value.rAC().is_bound()) { single_value->field_rAC = other_value.rAC(); } else { single_value->field_rAC.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void RAI_template::copy_template(const RAI_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.lAI().get_selection()) { single_value->field_lAI = other_value.lAI(); } else { single_value->field_lAI.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.rAC().get_selection()) { single_value->field_rAC = other_value.rAC(); } else { single_value->field_rAC.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RAI_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RAI_template(*other_value.implication_.precondition); implication_.implied_template = new RAI_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.RAI."); break; } set_selection(other_value); } RAI_template::RAI_template() { } RAI_template::RAI_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RAI_template::RAI_template(const RAI& other_value) { copy_value(other_value); } RAI_template::RAI_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.RAI from an unbound optional field."); } } RAI_template::RAI_template(RAI_template* p_precondition, RAI_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RAI_template::RAI_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RAI_template::RAI_template(const RAI_template& other_value) : Base_Template() { copy_template(other_value); } RAI_template::~RAI_template() { clean_up(); } RAI_template& RAI_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RAI_template& RAI_template::operator=(const RAI& other_value) { clean_up(); copy_value(other_value); return *this; } RAI_template& RAI_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RAI&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.RAI."); } return *this; } RAI_template& RAI_template::operator=(const RAI_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RAI_template::match(const RAI& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.lAI().is_bound()) return FALSE; if(!single_value->field_lAI.match(other_value.lAI(), legacy))return FALSE; if(!other_value.rAC().is_bound()) return FALSE; if(!single_value->field_rAC.match(other_value.rAC(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.RAI."); } return FALSE; } boolean RAI_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_lAI.is_bound() || single_value->field_rAC.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean RAI_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_lAI.is_value() && single_value->field_rAC.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void RAI_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RAI RAI_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.RAI."); RAI ret_val; if (single_value->field_lAI.is_bound()) { ret_val.lAI() = single_value->field_lAI.valueof(); } if (single_value->field_rAC.is_bound()) { ret_val.rAC() = single_value->field_rAC.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void RAI_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.RAI."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RAI_template[list_length]; } RAI_template& RAI_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.RAI."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.RAI."); return value_list.list_value[list_index]; } LAI_template& RAI_template::lAI() { set_specific(); return single_value->field_lAI; } const LAI_template& RAI_template::lAI() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lAI of a non-specific template of type @RANAP-IEs.RAI."); return single_value->field_lAI; } OCTETSTRING_template& RAI_template::rAC() { set_specific(); return single_value->field_rAC; } const OCTETSTRING_template& RAI_template::rAC() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rAC of a non-specific template of type @RANAP-IEs.RAI."); return single_value->field_rAC; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& RAI_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& RAI_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.RAI."); return single_value->field_iE__Extensions; } int RAI_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RAI containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.RAI."); } return 0; } void RAI_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ lAI := "); single_value->field_lAI.log(); TTCN_Logger::log_event_str(", rAC := "); single_value->field_rAC.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void RAI_template::log_match(const RAI& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_lAI.match(match_value.lAI(), legacy)){ TTCN_Logger::log_logmatch_info(".lAI"); single_value->field_lAI.log_match(match_value.lAI(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_rAC.match(match_value.rAC(), legacy)){ TTCN_Logger::log_logmatch_info(".rAC"); single_value->field_rAC.log_match(match_value.rAC(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ lAI := "); single_value->field_lAI.log_match(match_value.lAI(), legacy); TTCN_Logger::log_event_str(", rAC := "); single_value->field_rAC.log_match(match_value.rAC(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RAI_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (lAI().is_bound()) lAI().set_implicit_omit(); if (rAC().is_bound()) rAC().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RAI_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_lAI.encode_text(text_buf); single_value->field_rAC.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.RAI."); } } void RAI_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_lAI.decode_text(text_buf); single_value->field_rAC.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RAI_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.RAI."); } } void RAI_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RAI_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) lAI().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rAC().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "lAI")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { lAI().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "rAC")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { rAC().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RAI: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RAI_template* precondition = new RAI_template; precondition->set_param(*param.get_elem(0)); RAI_template* implied_template = new RAI_template; implied_template->set_param(*param.get_elem(1)); *this = RAI_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.RAI"); } is_ifpresent = param.get_ifpresent(); } void RAI_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_lAI.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAI"); single_value->field_rAC.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAI"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RAI"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RAI"); } boolean RAI_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RAI_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst14"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst14_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst14"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst14_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_iE__Extensions) : field_raiList(par_raiList), field_iE__Extensions(par_iE__Extensions) { } RABased::RABased(const RABased& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.RABased."); if (other_value.raiList().is_bound()) field_raiList = other_value.raiList(); else field_raiList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void RABased::clean_up() { field_raiList.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* RABased::get_descriptor() const { return &RABased_descr_; } RABased& RABased::operator=(const RABased& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.RABased."); if (other_value.raiList().is_bound()) field_raiList = other_value.raiList(); else field_raiList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean RABased::operator==(const RABased& other_value) const { return field_raiList==other_value.field_raiList && field_iE__Extensions==other_value.field_iE__Extensions; } boolean RABased::is_bound() const { return (field_raiList.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean RABased::is_value() const { return field_raiList.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int RABased::size_of() const { int ret_val = 1; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void RABased::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ raiList := "); field_raiList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void RABased::set_implicit_omit() { if (raiList().is_bound()) raiList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RABased::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) raiList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "raiList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { raiList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RABased: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.RABased"); } } void RABased::encode_text(Text_Buf& text_buf) const { field_raiList.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void RABased::decode_text(Text_Buf& text_buf) { field_raiList.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void RABased::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void RABased::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* RABased::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("raiList': "); new_tlv->add_TLV(field_raiList.BER_encode_TLV(RABased_raiList_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(RABased_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean RABased::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.RABased' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("raiList': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_raiList.BER_decode_TLV(RABased_raiList_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(RABased_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int RABased::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.RABased."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "raiList"); enc_len += field_raiList.JSON_encode(RABased_raiList_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(RABased_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int RABased::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean raiList_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (7 == name_len && 0 == strncmp(fld_name, "raiList", name_len)) { raiList_found = TRUE; int ret_val = field_raiList.JSON_decode(RABased_raiList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 7, "raiList"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(RABased_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!raiList_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "raiList"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int RABased::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_raiList.OER_encode(RABased_raiList_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(RABased_iE__Extensions_descr_, p_buf); return 0; } int RABased::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_raiList.OER_decode(RABased_raiList_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(RABased_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void RABased::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_raiList.PER_encode(RABased_raiList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(RABased_iE__Extensions_descr_, p_buf, p_options); } void RABased::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_raiList.PER_decode(RABased_raiList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(RABased_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct RABased_template::single_value_struct { RAI__List_template field_raiList; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template field_iE__Extensions; }; void RABased_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_raiList = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void RABased_template::copy_value(const RABased& other_value) { single_value = new single_value_struct; if (other_value.raiList().is_bound()) { single_value->field_raiList = other_value.raiList(); } else { single_value->field_raiList.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void RABased_template::copy_template(const RABased_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.raiList().get_selection()) { single_value->field_raiList = other_value.raiList(); } else { single_value->field_raiList.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new RABased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new RABased_template(*other_value.implication_.precondition); implication_.implied_template = new RABased_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.RABased."); break; } set_selection(other_value); } RABased_template::RABased_template() { } RABased_template::RABased_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } RABased_template::RABased_template(const RABased& other_value) { copy_value(other_value); } RABased_template::RABased_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.RABased from an unbound optional field."); } } RABased_template::RABased_template(RABased_template* p_precondition, RABased_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } RABased_template::RABased_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } RABased_template::RABased_template(const RABased_template& other_value) : Base_Template() { copy_template(other_value); } RABased_template::~RABased_template() { clean_up(); } RABased_template& RABased_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } RABased_template& RABased_template::operator=(const RABased& other_value) { clean_up(); copy_value(other_value); return *this; } RABased_template& RABased_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const RABased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.RABased."); } return *this; } RABased_template& RABased_template::operator=(const RABased_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean RABased_template::match(const RABased& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.raiList().is_bound()) return FALSE; if(!single_value->field_raiList.match(other_value.raiList(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.RABased."); } return FALSE; } boolean RABased_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_raiList.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean RABased_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_raiList.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void RABased_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } RABased RABased_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.RABased."); RABased ret_val; if (single_value->field_raiList.is_bound()) { ret_val.raiList() = single_value->field_raiList.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void RABased_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.RABased."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new RABased_template[list_length]; } RABased_template& RABased_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.RABased."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.RABased."); return value_list.list_value[list_index]; } RAI__List_template& RABased_template::raiList() { set_specific(); return single_value->field_raiList; } const RAI__List_template& RABased_template::raiList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field raiList of a non-specific template of type @RANAP-IEs.RABased."); return single_value->field_raiList; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& RABased_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& RABased_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.RABased."); return single_value->field_iE__Extensions; } int RABased_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.RABased containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.RABased."); } return 0; } void RABased_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ raiList := "); single_value->field_raiList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void RABased_template::log_match(const RABased& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_raiList.match(match_value.raiList(), legacy)){ TTCN_Logger::log_logmatch_info(".raiList"); single_value->field_raiList.log_match(match_value.raiList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ raiList := "); single_value->field_raiList.log_match(match_value.raiList(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void RABased_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (raiList().is_bound()) raiList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void RABased_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_raiList.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.RABased."); } } void RABased_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_raiList.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new RABased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.RABased."); } } void RABased_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { RABased_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) raiList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "raiList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { raiList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.RABased: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { RABased_template* precondition = new RABased_template; precondition->set_param(*param.get_elem(0)); RABased_template* implied_template = new RABased_template; implied_template->set_param(*param.get_elem(1)); *this = RABased_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.RABased"); } is_ifpresent = param.get_ifpresent(); } void RABased_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_raiList.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RABased"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.RABased"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.RABased"); } boolean RABased_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean RABased_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst15"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst15_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst15"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst15_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_iE__Extensions) : field_plmnList(par_plmnList), field_iE__Extensions(par_iE__Extensions) { } PLMNBased::PLMNBased(const PLMNBased& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.PLMNBased."); if (other_value.plmnList().is_bound()) field_plmnList = other_value.plmnList(); else field_plmnList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void PLMNBased::clean_up() { field_plmnList.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* PLMNBased::get_descriptor() const { return &PLMNBased_descr_; } PLMNBased& PLMNBased::operator=(const PLMNBased& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.PLMNBased."); if (other_value.plmnList().is_bound()) field_plmnList = other_value.plmnList(); else field_plmnList.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean PLMNBased::operator==(const PLMNBased& other_value) const { return field_plmnList==other_value.field_plmnList && field_iE__Extensions==other_value.field_iE__Extensions; } boolean PLMNBased::is_bound() const { return (field_plmnList.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean PLMNBased::is_value() const { return field_plmnList.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int PLMNBased::size_of() const { int ret_val = 1; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void PLMNBased::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ plmnList := "); field_plmnList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void PLMNBased::set_implicit_omit() { if (plmnList().is_bound()) plmnList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void PLMNBased::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) plmnList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "plmnList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { plmnList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.PLMNBased: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.PLMNBased"); } } void PLMNBased::encode_text(Text_Buf& text_buf) const { field_plmnList.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void PLMNBased::decode_text(Text_Buf& text_buf) { field_plmnList.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void PLMNBased::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void PLMNBased::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* PLMNBased::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("plmnList': "); new_tlv->add_TLV(field_plmnList.BER_encode_TLV(PLMNBased_plmnList_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(PLMNBased_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean PLMNBased::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.PLMNBased' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("plmnList': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_plmnList.BER_decode_TLV(PLMNBased_plmnList_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(PLMNBased_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int PLMNBased::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.PLMNBased."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "plmnList"); enc_len += field_plmnList.JSON_encode(PLMNBased_plmnList_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(PLMNBased_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int PLMNBased::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean plmnList_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (8 == name_len && 0 == strncmp(fld_name, "plmnList", name_len)) { plmnList_found = TRUE; int ret_val = field_plmnList.JSON_decode(PLMNBased_plmnList_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 8, "plmnList"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(PLMNBased_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!plmnList_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "plmnList"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int PLMNBased::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_plmnList.OER_encode(PLMNBased_plmnList_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(PLMNBased_iE__Extensions_descr_, p_buf); return 0; } int PLMNBased::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_plmnList.OER_decode(PLMNBased_plmnList_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(PLMNBased_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void PLMNBased::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_plmnList.PER_encode(PLMNBased_plmnList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(PLMNBased_iE__Extensions_descr_, p_buf, p_options); } void PLMNBased::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_plmnList.PER_decode(PLMNBased_plmnList_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(PLMNBased_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct PLMNBased_template::single_value_struct { PLMNList_template field_plmnList; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template field_iE__Extensions; }; void PLMNBased_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_plmnList = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void PLMNBased_template::copy_value(const PLMNBased& other_value) { single_value = new single_value_struct; if (other_value.plmnList().is_bound()) { single_value->field_plmnList = other_value.plmnList(); } else { single_value->field_plmnList.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void PLMNBased_template::copy_template(const PLMNBased_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.plmnList().get_selection()) { single_value->field_plmnList = other_value.plmnList(); } else { single_value->field_plmnList.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new PLMNBased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new PLMNBased_template(*other_value.implication_.precondition); implication_.implied_template = new PLMNBased_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.PLMNBased."); break; } set_selection(other_value); } PLMNBased_template::PLMNBased_template() { } PLMNBased_template::PLMNBased_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } PLMNBased_template::PLMNBased_template(const PLMNBased& other_value) { copy_value(other_value); } PLMNBased_template::PLMNBased_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PLMNBased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.PLMNBased from an unbound optional field."); } } PLMNBased_template::PLMNBased_template(PLMNBased_template* p_precondition, PLMNBased_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } PLMNBased_template::PLMNBased_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } PLMNBased_template::PLMNBased_template(const PLMNBased_template& other_value) : Base_Template() { copy_template(other_value); } PLMNBased_template::~PLMNBased_template() { clean_up(); } PLMNBased_template& PLMNBased_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } PLMNBased_template& PLMNBased_template::operator=(const PLMNBased& other_value) { clean_up(); copy_value(other_value); return *this; } PLMNBased_template& PLMNBased_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const PLMNBased&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.PLMNBased."); } return *this; } PLMNBased_template& PLMNBased_template::operator=(const PLMNBased_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean PLMNBased_template::match(const PLMNBased& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.plmnList().is_bound()) return FALSE; if(!single_value->field_plmnList.match(other_value.plmnList(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.PLMNBased."); } return FALSE; } boolean PLMNBased_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_plmnList.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean PLMNBased_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_plmnList.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void PLMNBased_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } PLMNBased PLMNBased_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.PLMNBased."); PLMNBased ret_val; if (single_value->field_plmnList.is_bound()) { ret_val.plmnList() = single_value->field_plmnList.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void PLMNBased_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.PLMNBased."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new PLMNBased_template[list_length]; } PLMNBased_template& PLMNBased_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.PLMNBased."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.PLMNBased."); return value_list.list_value[list_index]; } PLMNList_template& PLMNBased_template::plmnList() { set_specific(); return single_value->field_plmnList; } const PLMNList_template& PLMNBased_template::plmnList() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field plmnList of a non-specific template of type @RANAP-IEs.PLMNBased."); return single_value->field_plmnList; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& PLMNBased_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& PLMNBased_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.PLMNBased."); return single_value->field_iE__Extensions; } int PLMNBased_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.PLMNBased containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.PLMNBased."); } return 0; } void PLMNBased_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ plmnList := "); single_value->field_plmnList.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void PLMNBased_template::log_match(const PLMNBased& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_plmnList.match(match_value.plmnList(), legacy)){ TTCN_Logger::log_logmatch_info(".plmnList"); single_value->field_plmnList.log_match(match_value.plmnList(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ plmnList := "); single_value->field_plmnList.log_match(match_value.plmnList(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void PLMNBased_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (plmnList().is_bound()) plmnList().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void PLMNBased_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_plmnList.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.PLMNBased."); } } void PLMNBased_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_plmnList.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new PLMNBased_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.PLMNBased."); } } void PLMNBased_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { PLMNBased_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) plmnList().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "plmnList")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { plmnList().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.PLMNBased: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { PLMNBased_template* precondition = new PLMNBased_template; precondition->set_param(*param.get_elem(0)); PLMNBased_template* implied_template = new PLMNBased_template; implied_template->set_param(*param.get_elem(1)); *this = PLMNBased_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.PLMNBased"); } is_ifpresent = param.get_ifpresent(); } void PLMNBased_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_plmnList.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.PLMNBased"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.PLMNBased"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.PLMNBased"); } boolean PLMNBased_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean PLMNBased_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst16"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst16_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst16"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst16_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) applicationLayerContainerForMeasurementConfiguration().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "applicationLayerContainerForMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { applicationLayerContainerForMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "areaScopeForUEApplicationLayerMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration"); } } void UE__Application__Layer__Measurement__Configuration::encode_text(Text_Buf& text_buf) const { field_applicationLayerContainerForMeasurementConfiguration.encode_text(text_buf); field_areaScopeForUEApplicationLayerMeasurementConfiguration.encode_text(text_buf); } void UE__Application__Layer__Measurement__Configuration::decode_text(Text_Buf& text_buf) { field_applicationLayerContainerForMeasurementConfiguration.decode_text(text_buf); field_areaScopeForUEApplicationLayerMeasurementConfiguration.decode_text(text_buf); } void UE__Application__Layer__Measurement__Configuration::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void UE__Application__Layer__Measurement__Configuration::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* UE__Application__Layer__Measurement__Configuration::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("applicationLayerContainerForMeasurementConfiguration': "); new_tlv->add_TLV(field_applicationLayerContainerForMeasurementConfiguration.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_coding)); ec_1.set_msg("areaScopeForUEApplicationLayerMeasurementConfiguration': "); new_tlv->add_TLV(field_areaScopeForUEApplicationLayerMeasurementConfiguration.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean UE__Application__Layer__Measurement__Configuration::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.UE-Application-Layer-Measurement-Configuration' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("applicationLayerContainerForMeasurementConfiguration': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_applicationLayerContainerForMeasurementConfiguration.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("areaScopeForUEApplicationLayerMeasurementConfiguration': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_areaScopeForUEApplicationLayerMeasurementConfiguration.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int UE__Application__Layer__Measurement__Configuration::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "applicationLayerContainerForMeasurementConfiguration"); enc_len += field_applicationLayerContainerForMeasurementConfiguration.JSON_encode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "areaScopeForUEApplicationLayerMeasurementConfiguration"); enc_len += field_areaScopeForUEApplicationLayerMeasurementConfiguration.JSON_encode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int UE__Application__Layer__Measurement__Configuration::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean applicationLayerContainerForMeasurementConfiguration_found = FALSE; boolean areaScopeForUEApplicationLayerMeasurementConfiguration_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (52 == name_len && 0 == strncmp(fld_name, "applicationLayerContainerForMeasurementConfiguration", name_len)) { applicationLayerContainerForMeasurementConfiguration_found = TRUE; int ret_val = field_applicationLayerContainerForMeasurementConfiguration.JSON_decode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 52, "applicationLayerContainerForMeasurementConfiguration"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (54 == name_len && 0 == strncmp(fld_name, "areaScopeForUEApplicationLayerMeasurementConfiguration", name_len)) { areaScopeForUEApplicationLayerMeasurementConfiguration_found = TRUE; int ret_val = field_areaScopeForUEApplicationLayerMeasurementConfiguration.JSON_decode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 54, "areaScopeForUEApplicationLayerMeasurementConfiguration"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!applicationLayerContainerForMeasurementConfiguration_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "applicationLayerContainerForMeasurementConfiguration"); return JSON_ERROR_FATAL; } if (!areaScopeForUEApplicationLayerMeasurementConfiguration_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "areaScopeForUEApplicationLayerMeasurementConfiguration"); return JSON_ERROR_FATAL; } return (int)dec_len; } int UE__Application__Layer__Measurement__Configuration::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; p_buf.put_c(c); field_applicationLayerContainerForMeasurementConfiguration.OER_encode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_buf); field_areaScopeForUEApplicationLayerMeasurementConfiguration.OER_encode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf); return 0; } int UE__Application__Layer__Measurement__Configuration::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_applicationLayerContainerForMeasurementConfiguration.OER_decode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_buf, p_oer); field_areaScopeForUEApplicationLayerMeasurementConfiguration.OER_decode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_oer); if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void UE__Application__Layer__Measurement__Configuration::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); field_applicationLayerContainerForMeasurementConfiguration.PER_encode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_buf, p_options); field_areaScopeForUEApplicationLayerMeasurementConfiguration.PER_encode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_options); } void UE__Application__Layer__Measurement__Configuration::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); field_applicationLayerContainerForMeasurementConfiguration.PER_decode(UE__Application__Layer__Measurement__Configuration_applicationLayerContainerForMeasurementConfiguration_descr_, p_buf, p_options); field_areaScopeForUEApplicationLayerMeasurementConfiguration.PER_decode(UE__Application__Layer__Measurement__Configuration_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_options); Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct UE__Application__Layer__Measurement__Configuration_template::single_value_struct { OCTETSTRING_template field_applicationLayerContainerForMeasurementConfiguration; AreaScopeForUEApplicationLayerMeasurementConfiguration_template field_areaScopeForUEApplicationLayerMeasurementConfiguration; }; void UE__Application__Layer__Measurement__Configuration_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_applicationLayerContainerForMeasurementConfiguration = ANY_VALUE; single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = ANY_VALUE; } } } void UE__Application__Layer__Measurement__Configuration_template::copy_value(const UE__Application__Layer__Measurement__Configuration& other_value) { single_value = new single_value_struct; if (other_value.applicationLayerContainerForMeasurementConfiguration().is_bound()) { single_value->field_applicationLayerContainerForMeasurementConfiguration = other_value.applicationLayerContainerForMeasurementConfiguration(); } else { single_value->field_applicationLayerContainerForMeasurementConfiguration.clean_up(); } if (other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); } else { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); } set_selection(SPECIFIC_VALUE); } void UE__Application__Layer__Measurement__Configuration_template::copy_template(const UE__Application__Layer__Measurement__Configuration_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.applicationLayerContainerForMeasurementConfiguration().get_selection()) { single_value->field_applicationLayerContainerForMeasurementConfiguration = other_value.applicationLayerContainerForMeasurementConfiguration(); } else { single_value->field_applicationLayerContainerForMeasurementConfiguration.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().get_selection()) { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); } else { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new UE__Application__Layer__Measurement__Configuration_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new UE__Application__Layer__Measurement__Configuration_template(*other_value.implication_.precondition); implication_.implied_template = new UE__Application__Layer__Measurement__Configuration_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); break; } set_selection(other_value); } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template() { } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(const UE__Application__Layer__Measurement__Configuration& other_value) { copy_value(other_value); } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const UE__Application__Layer__Measurement__Configuration&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration from an unbound optional field."); } } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(UE__Application__Layer__Measurement__Configuration_template* p_precondition, UE__Application__Layer__Measurement__Configuration_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } UE__Application__Layer__Measurement__Configuration_template::UE__Application__Layer__Measurement__Configuration_template(const UE__Application__Layer__Measurement__Configuration_template& other_value) : Base_Template() { copy_template(other_value); } UE__Application__Layer__Measurement__Configuration_template::~UE__Application__Layer__Measurement__Configuration_template() { clean_up(); } UE__Application__Layer__Measurement__Configuration_template& UE__Application__Layer__Measurement__Configuration_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } UE__Application__Layer__Measurement__Configuration_template& UE__Application__Layer__Measurement__Configuration_template::operator=(const UE__Application__Layer__Measurement__Configuration& other_value) { clean_up(); copy_value(other_value); return *this; } UE__Application__Layer__Measurement__Configuration_template& UE__Application__Layer__Measurement__Configuration_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const UE__Application__Layer__Measurement__Configuration&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); } return *this; } UE__Application__Layer__Measurement__Configuration_template& UE__Application__Layer__Measurement__Configuration_template::operator=(const UE__Application__Layer__Measurement__Configuration_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean UE__Application__Layer__Measurement__Configuration_template::match(const UE__Application__Layer__Measurement__Configuration& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.applicationLayerContainerForMeasurementConfiguration().is_bound()) return FALSE; if(!single_value->field_applicationLayerContainerForMeasurementConfiguration.match(other_value.applicationLayerContainerForMeasurementConfiguration(), legacy))return FALSE; if(!other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) return FALSE; if(!single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.match(other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); } return FALSE; } boolean UE__Application__Layer__Measurement__Configuration_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_applicationLayerContainerForMeasurementConfiguration.is_bound() || single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_bound(); } boolean UE__Application__Layer__Measurement__Configuration_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_applicationLayerContainerForMeasurementConfiguration.is_value() && single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_value(); } void UE__Application__Layer__Measurement__Configuration_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } UE__Application__Layer__Measurement__Configuration UE__Application__Layer__Measurement__Configuration_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); UE__Application__Layer__Measurement__Configuration ret_val; if (single_value->field_applicationLayerContainerForMeasurementConfiguration.is_bound()) { ret_val.applicationLayerContainerForMeasurementConfiguration() = single_value->field_applicationLayerContainerForMeasurementConfiguration.valueof(); } if (single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_bound()) { ret_val.areaScopeForUEApplicationLayerMeasurementConfiguration() = single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.valueof(); } return ret_val; } void UE__Application__Layer__Measurement__Configuration_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new UE__Application__Layer__Measurement__Configuration_template[list_length]; } UE__Application__Layer__Measurement__Configuration_template& UE__Application__Layer__Measurement__Configuration_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); return value_list.list_value[list_index]; } OCTETSTRING_template& UE__Application__Layer__Measurement__Configuration_template::applicationLayerContainerForMeasurementConfiguration() { set_specific(); return single_value->field_applicationLayerContainerForMeasurementConfiguration; } const OCTETSTRING_template& UE__Application__Layer__Measurement__Configuration_template::applicationLayerContainerForMeasurementConfiguration() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field applicationLayerContainerForMeasurementConfiguration of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); return single_value->field_applicationLayerContainerForMeasurementConfiguration; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& UE__Application__Layer__Measurement__Configuration_template::areaScopeForUEApplicationLayerMeasurementConfiguration() { set_specific(); return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration; } const AreaScopeForUEApplicationLayerMeasurementConfiguration_template& UE__Application__Layer__Measurement__Configuration_template::areaScopeForUEApplicationLayerMeasurementConfiguration() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field areaScopeForUEApplicationLayerMeasurementConfiguration of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration; } int UE__Application__Layer__Measurement__Configuration_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 2; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); } return 0; } void UE__Application__Layer__Measurement__Configuration_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ applicationLayerContainerForMeasurementConfiguration := "); single_value->field_applicationLayerContainerForMeasurementConfiguration.log(); TTCN_Logger::log_event_str(", areaScopeForUEApplicationLayerMeasurementConfiguration := "); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void UE__Application__Layer__Measurement__Configuration_template::log_match(const UE__Application__Layer__Measurement__Configuration& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_applicationLayerContainerForMeasurementConfiguration.match(match_value.applicationLayerContainerForMeasurementConfiguration(), legacy)){ TTCN_Logger::log_logmatch_info(".applicationLayerContainerForMeasurementConfiguration"); single_value->field_applicationLayerContainerForMeasurementConfiguration.log_match(match_value.applicationLayerContainerForMeasurementConfiguration(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy)){ TTCN_Logger::log_logmatch_info(".areaScopeForUEApplicationLayerMeasurementConfiguration"); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log_match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ applicationLayerContainerForMeasurementConfiguration := "); single_value->field_applicationLayerContainerForMeasurementConfiguration.log_match(match_value.applicationLayerContainerForMeasurementConfiguration(), legacy); TTCN_Logger::log_event_str(", areaScopeForUEApplicationLayerMeasurementConfiguration := "); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log_match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void UE__Application__Layer__Measurement__Configuration_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (applicationLayerContainerForMeasurementConfiguration().is_bound()) applicationLayerContainerForMeasurementConfiguration().set_implicit_omit(); if (areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) areaScopeForUEApplicationLayerMeasurementConfiguration().set_implicit_omit(); } void UE__Application__Layer__Measurement__Configuration_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_applicationLayerContainerForMeasurementConfiguration.encode_text(text_buf); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); } } void UE__Application__Layer__Measurement__Configuration_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_applicationLayerContainerForMeasurementConfiguration.decode_text(text_buf); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new UE__Application__Layer__Measurement__Configuration_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration."); } } void UE__Application__Layer__Measurement__Configuration_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { UE__Application__Layer__Measurement__Configuration_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) applicationLayerContainerForMeasurementConfiguration().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "applicationLayerContainerForMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { applicationLayerContainerForMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "areaScopeForUEApplicationLayerMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { UE__Application__Layer__Measurement__Configuration_template* precondition = new UE__Application__Layer__Measurement__Configuration_template; precondition->set_param(*param.get_elem(0)); UE__Application__Layer__Measurement__Configuration_template* implied_template = new UE__Application__Layer__Measurement__Configuration_template; implied_template->set_param(*param.get_elem(1)); *this = UE__Application__Layer__Measurement__Configuration_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration"); } is_ifpresent = param.get_ifpresent(); } void UE__Application__Layer__Measurement__Configuration_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_applicationLayerContainerForMeasurementConfiguration.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration"); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration"); } boolean UE__Application__Layer__Measurement__Configuration_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean UE__Application__Layer__Measurement__Configuration_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx& par_tracePropagationParameters, const OPTIONAL< BITSTRING >& par_traceCollectionEntityIPAddress) : field_areaScopeForUEApplicationLayerMeasurementConfiguration(par_areaScopeForUEApplicationLayerMeasurementConfiguration), field_traceReference(par_traceReference), field_tracePropagationParameters(par_tracePropagationParameters), field_traceCollectionEntityIPAddress(par_traceCollectionEntityIPAddress) { } UE__Application__Layer__Measurement__Configuration__For__Relocation::UE__Application__Layer__Measurement__Configuration__For__Relocation(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); if (other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); else field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); if (other_value.traceReference().is_bound()) field_traceReference = other_value.traceReference(); else field_traceReference.clean_up(); if (other_value.tracePropagationParameters().is_bound()) field_tracePropagationParameters = other_value.tracePropagationParameters(); else field_tracePropagationParameters.clean_up(); if (other_value.traceCollectionEntityIPAddress().is_bound()) field_traceCollectionEntityIPAddress = other_value.traceCollectionEntityIPAddress(); else field_traceCollectionEntityIPAddress.clean_up(); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::clean_up() { field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); field_traceReference.clean_up(); field_tracePropagationParameters.clean_up(); field_traceCollectionEntityIPAddress.clean_up(); } const TTCN_Typedescriptor_t* UE__Application__Layer__Measurement__Configuration__For__Relocation::get_descriptor() const { return &UE__Application__Layer__Measurement__Configuration__For__Relocation_descr_; } UE__Application__Layer__Measurement__Configuration__For__Relocation& UE__Application__Layer__Measurement__Configuration__For__Relocation::operator=(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); if (other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); else field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); if (other_value.traceReference().is_bound()) field_traceReference = other_value.traceReference(); else field_traceReference.clean_up(); if (other_value.tracePropagationParameters().is_bound()) field_tracePropagationParameters = other_value.tracePropagationParameters(); else field_tracePropagationParameters.clean_up(); if (other_value.traceCollectionEntityIPAddress().is_bound()) field_traceCollectionEntityIPAddress = other_value.traceCollectionEntityIPAddress(); else field_traceCollectionEntityIPAddress.clean_up(); } return *this; } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation::operator==(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) const { return field_areaScopeForUEApplicationLayerMeasurementConfiguration==other_value.field_areaScopeForUEApplicationLayerMeasurementConfiguration && field_traceReference==other_value.field_traceReference && field_tracePropagationParameters==other_value.field_tracePropagationParameters && field_traceCollectionEntityIPAddress==other_value.field_traceCollectionEntityIPAddress; } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation::is_bound() const { return (field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_bound()) || (field_traceReference.is_bound()) || (OPTIONAL_OMIT == field_tracePropagationParameters.get_selection() || field_tracePropagationParameters.is_bound()) || (OPTIONAL_OMIT == field_traceCollectionEntityIPAddress.get_selection() || field_traceCollectionEntityIPAddress.is_bound()); } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation::is_value() const { return field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_value() && field_traceReference.is_value() && (OPTIONAL_OMIT == field_tracePropagationParameters.get_selection() || field_tracePropagationParameters.is_value()) && (OPTIONAL_OMIT == field_traceCollectionEntityIPAddress.get_selection() || field_traceCollectionEntityIPAddress.is_value()); } int UE__Application__Layer__Measurement__Configuration__For__Relocation::size_of() const { int ret_val = 2; if (field_tracePropagationParameters.ispresent()) ret_val++; if (field_traceCollectionEntityIPAddress.ispresent()) ret_val++; return ret_val; } void UE__Application__Layer__Measurement__Configuration__For__Relocation::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ areaScopeForUEApplicationLayerMeasurementConfiguration := "); field_areaScopeForUEApplicationLayerMeasurementConfiguration.log(); TTCN_Logger::log_event_str(", traceReference := "); field_traceReference.log(); TTCN_Logger::log_event_str(", tracePropagationParameters := "); field_tracePropagationParameters.log(); TTCN_Logger::log_event_str(", traceCollectionEntityIPAddress := "); field_traceCollectionEntityIPAddress.log(); TTCN_Logger::log_event_str(" }"); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::set_implicit_omit() { if (areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) areaScopeForUEApplicationLayerMeasurementConfiguration().set_implicit_omit(); if (traceReference().is_bound()) traceReference().set_implicit_omit(); if (!tracePropagationParameters().is_bound()) tracePropagationParameters() = OMIT_VALUE; else tracePropagationParameters().set_implicit_omit(); if (!traceCollectionEntityIPAddress().is_bound()) traceCollectionEntityIPAddress() = OMIT_VALUE; else traceCollectionEntityIPAddress().set_implicit_omit(); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (40 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) traceReference().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) tracePropagationParameters().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) traceCollectionEntityIPAddress().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "areaScopeForUEApplicationLayerMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceReference")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceReference().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tracePropagationParameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tracePropagationParameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceCollectionEntityIPAddress")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceCollectionEntityIPAddress().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); } } void UE__Application__Layer__Measurement__Configuration__For__Relocation::encode_text(Text_Buf& text_buf) const { field_areaScopeForUEApplicationLayerMeasurementConfiguration.encode_text(text_buf); field_traceReference.encode_text(text_buf); field_tracePropagationParameters.encode_text(text_buf); field_traceCollectionEntityIPAddress.encode_text(text_buf); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::decode_text(Text_Buf& text_buf) { field_areaScopeForUEApplicationLayerMeasurementConfiguration.decode_text(text_buf); field_traceReference.decode_text(text_buf); field_tracePropagationParameters.decode_text(text_buf); field_traceCollectionEntityIPAddress.decode_text(text_buf); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* UE__Application__Layer__Measurement__Configuration__For__Relocation::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("areaScopeForUEApplicationLayerMeasurementConfiguration': "); new_tlv->add_TLV(field_areaScopeForUEApplicationLayerMeasurementConfiguration.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_coding)); ec_1.set_msg("traceReference': "); new_tlv->add_TLV(field_traceReference.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_coding)); ec_1.set_msg("tracePropagationParameters': "); new_tlv->add_TLV(field_tracePropagationParameters.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_coding)); ec_1.set_msg("traceCollectionEntityIPAddress': "); new_tlv->add_TLV(field_traceCollectionEntityIPAddress.BER_encode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("areaScopeForUEApplicationLayerMeasurementConfiguration': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_areaScopeForUEApplicationLayerMeasurementConfiguration.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("traceReference': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_traceReference.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("tracePropagationParameters': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_tracePropagationParameters=OMIT_VALUE; else { field_tracePropagationParameters.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, tmp_tlv, L_form); if(field_tracePropagationParameters.ispresent()) tlv_present=FALSE; } ec_2.set_msg("traceCollectionEntityIPAddress': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_traceCollectionEntityIPAddress=OMIT_VALUE; else { field_traceCollectionEntityIPAddress.BER_decode_TLV(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, tmp_tlv, L_form); if(field_traceCollectionEntityIPAddress.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int UE__Application__Layer__Measurement__Configuration__For__Relocation::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "areaScopeForUEApplicationLayerMeasurementConfiguration"); enc_len += field_areaScopeForUEApplicationLayerMeasurementConfiguration.JSON_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "traceReference"); enc_len += field_traceReference.JSON_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_tok, FALSE); } if (field_tracePropagationParameters.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "tracePropagationParameters"); enc_len += field_tracePropagationParameters.JSON_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_tok, FALSE); } if (field_traceCollectionEntityIPAddress.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "traceCollectionEntityIPAddress"); enc_len += field_traceCollectionEntityIPAddress.JSON_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int UE__Application__Layer__Measurement__Configuration__For__Relocation::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean areaScopeForUEApplicationLayerMeasurementConfiguration_found = FALSE; boolean traceReference_found = FALSE; boolean tracePropagationParameters_found = FALSE; boolean traceCollectionEntityIPAddress_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (54 == name_len && 0 == strncmp(fld_name, "areaScopeForUEApplicationLayerMeasurementConfiguration", name_len)) { areaScopeForUEApplicationLayerMeasurementConfiguration_found = TRUE; int ret_val = field_areaScopeForUEApplicationLayerMeasurementConfiguration.JSON_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 54, "areaScopeForUEApplicationLayerMeasurementConfiguration"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "traceReference", name_len)) { traceReference_found = TRUE; int ret_val = field_traceReference.JSON_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "traceReference"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (26 == name_len && 0 == strncmp(fld_name, "tracePropagationParameters", name_len)) { tracePropagationParameters_found = TRUE; int ret_val = field_tracePropagationParameters.JSON_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 26, "tracePropagationParameters"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (30 == name_len && 0 == strncmp(fld_name, "traceCollectionEntityIPAddress", name_len)) { traceCollectionEntityIPAddress_found = TRUE; int ret_val = field_traceCollectionEntityIPAddress.JSON_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 30, "traceCollectionEntityIPAddress"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!areaScopeForUEApplicationLayerMeasurementConfiguration_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "areaScopeForUEApplicationLayerMeasurementConfiguration"); return JSON_ERROR_FATAL; } if (!traceReference_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "traceReference"); return JSON_ERROR_FATAL; } if (!tracePropagationParameters_found) { field_tracePropagationParameters = OMIT_VALUE; } if (!traceCollectionEntityIPAddress_found) { field_traceCollectionEntityIPAddress = OMIT_VALUE; } return (int)dec_len; } int UE__Application__Layer__Measurement__Configuration__For__Relocation::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_tracePropagationParameters.is_present()) { c |= 64; } if (field_traceCollectionEntityIPAddress.is_present()) { c |= 32; } p_buf.put_c(c); field_areaScopeForUEApplicationLayerMeasurementConfiguration.OER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf); field_traceReference.OER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_buf); if (field_tracePropagationParameters.is_present()) field_tracePropagationParameters.OER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_buf); if (field_traceCollectionEntityIPAddress.is_present()) field_traceCollectionEntityIPAddress.OER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_buf); return 0; } int UE__Application__Layer__Measurement__Configuration__For__Relocation::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_areaScopeForUEApplicationLayerMeasurementConfiguration.OER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_oer); field_traceReference.OER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_buf, p_oer); if (uc[0] & 64) field_tracePropagationParameters.OER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_buf, p_oer); else field_tracePropagationParameters = OMIT_VALUE; if (uc[0] & 32) field_traceCollectionEntityIPAddress.OER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_buf, p_oer); else field_traceCollectionEntityIPAddress = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void UE__Application__Layer__Measurement__Configuration__For__Relocation::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_tracePropagationParameters_present = field_tracePropagationParameters.is_present(); p_buf.PER_put_bit(field_tracePropagationParameters_present); boolean field_traceCollectionEntityIPAddress_present = field_traceCollectionEntityIPAddress.is_present(); p_buf.PER_put_bit(field_traceCollectionEntityIPAddress_present); field_areaScopeForUEApplicationLayerMeasurementConfiguration.PER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_options); field_traceReference.PER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_buf, p_options); if (field_tracePropagationParameters_present) field_tracePropagationParameters.PER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_buf, p_options); if (field_traceCollectionEntityIPAddress_present) field_traceCollectionEntityIPAddress.PER_encode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_buf, p_options); } void UE__Application__Layer__Measurement__Configuration__For__Relocation::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_tracePropagationParameters_present = p_buf.PER_get_bit(); boolean field_traceCollectionEntityIPAddress_present = p_buf.PER_get_bit(); field_areaScopeForUEApplicationLayerMeasurementConfiguration.PER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_areaScopeForUEApplicationLayerMeasurementConfiguration_descr_, p_buf, p_options); field_traceReference.PER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceReference_descr_, p_buf, p_options); if (field_tracePropagationParameters_present) field_tracePropagationParameters.PER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_tracePropagationParameters_descr_, p_buf, p_options); else field_tracePropagationParameters = OMIT_VALUE; if (field_traceCollectionEntityIPAddress_present) field_traceCollectionEntityIPAddress.PER_decode(UE__Application__Layer__Measurement__Configuration__For__Relocation_traceCollectionEntityIPAddress_descr_, p_buf, p_options); else field_traceCollectionEntityIPAddress = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct UE__Application__Layer__Measurement__Configuration__For__Relocation_template::single_value_struct { AreaScopeForUEApplicationLayerMeasurementConfiguration_template field_areaScopeForUEApplicationLayerMeasurementConfiguration; OCTETSTRING_template field_traceReference; TracePropagationParameters_template field_tracePropagationParameters; BITSTRING_template field_traceCollectionEntityIPAddress; }; void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = ANY_VALUE; single_value->field_traceReference = ANY_VALUE; single_value->field_tracePropagationParameters = ANY_OR_OMIT; single_value->field_traceCollectionEntityIPAddress = ANY_OR_OMIT; } } } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::copy_value(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) { single_value = new single_value_struct; if (other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); } else { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); } if (other_value.traceReference().is_bound()) { single_value->field_traceReference = other_value.traceReference(); } else { single_value->field_traceReference.clean_up(); } if (other_value.tracePropagationParameters().is_bound()) { if (other_value.tracePropagationParameters().ispresent()) single_value->field_tracePropagationParameters = other_value.tracePropagationParameters()(); else single_value->field_tracePropagationParameters = OMIT_VALUE; } else { single_value->field_tracePropagationParameters.clean_up(); } if (other_value.traceCollectionEntityIPAddress().is_bound()) { if (other_value.traceCollectionEntityIPAddress().ispresent()) single_value->field_traceCollectionEntityIPAddress = other_value.traceCollectionEntityIPAddress()(); else single_value->field_traceCollectionEntityIPAddress = OMIT_VALUE; } else { single_value->field_traceCollectionEntityIPAddress.clean_up(); } set_selection(SPECIFIC_VALUE); } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::copy_template(const UE__Application__Layer__Measurement__Configuration__For__Relocation_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().get_selection()) { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration = other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(); } else { single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.traceReference().get_selection()) { single_value->field_traceReference = other_value.traceReference(); } else { single_value->field_traceReference.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.tracePropagationParameters().get_selection()) { single_value->field_tracePropagationParameters = other_value.tracePropagationParameters(); } else { single_value->field_tracePropagationParameters.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.traceCollectionEntityIPAddress().get_selection()) { single_value->field_traceCollectionEntityIPAddress = other_value.traceCollectionEntityIPAddress(); } else { single_value->field_traceCollectionEntityIPAddress.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template(*other_value.implication_.precondition); implication_.implied_template = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); break; } set_selection(other_value); } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template() { } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) { copy_value(other_value); } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const UE__Application__Layer__Measurement__Configuration__For__Relocation&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation from an unbound optional field."); } } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(UE__Application__Layer__Measurement__Configuration__For__Relocation_template* p_precondition, UE__Application__Layer__Measurement__Configuration__For__Relocation_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::UE__Application__Layer__Measurement__Configuration__For__Relocation_template(const UE__Application__Layer__Measurement__Configuration__For__Relocation_template& other_value) : Base_Template() { copy_template(other_value); } UE__Application__Layer__Measurement__Configuration__For__Relocation_template::~UE__Application__Layer__Measurement__Configuration__For__Relocation_template() { clean_up(); } UE__Application__Layer__Measurement__Configuration__For__Relocation_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::operator=(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value) { clean_up(); copy_value(other_value); return *this; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const UE__Application__Layer__Measurement__Configuration__For__Relocation&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); } return *this; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::operator=(const UE__Application__Layer__Measurement__Configuration__For__Relocation_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation_template::match(const UE__Application__Layer__Measurement__Configuration__For__Relocation& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) return FALSE; if(!single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.match(other_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy))return FALSE; if(!other_value.traceReference().is_bound()) return FALSE; if(!single_value->field_traceReference.match(other_value.traceReference(), legacy))return FALSE; if(!other_value.tracePropagationParameters().is_bound()) return FALSE; if((other_value.tracePropagationParameters().ispresent() ? !single_value->field_tracePropagationParameters.match((const TracePropagationParameters&)other_value.tracePropagationParameters(), legacy) : !single_value->field_tracePropagationParameters.match_omit(legacy)))return FALSE; if(!other_value.traceCollectionEntityIPAddress().is_bound()) return FALSE; if((other_value.traceCollectionEntityIPAddress().ispresent() ? !single_value->field_traceCollectionEntityIPAddress.match((const BITSTRING&)other_value.traceCollectionEntityIPAddress(), legacy) : !single_value->field_traceCollectionEntityIPAddress.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); } return FALSE; } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_bound() || single_value->field_traceReference.is_bound() || (single_value->field_tracePropagationParameters.is_omit() || single_value->field_tracePropagationParameters.is_bound()) || (single_value->field_traceCollectionEntityIPAddress.is_omit() || single_value->field_traceCollectionEntityIPAddress.is_bound()); } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_value() && single_value->field_traceReference.is_value() && (single_value->field_tracePropagationParameters.is_omit() || single_value->field_tracePropagationParameters.is_value()) && (single_value->field_traceCollectionEntityIPAddress.is_omit() || single_value->field_traceCollectionEntityIPAddress.is_value()); } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } UE__Application__Layer__Measurement__Configuration__For__Relocation UE__Application__Layer__Measurement__Configuration__For__Relocation_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); UE__Application__Layer__Measurement__Configuration__For__Relocation ret_val; if (single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.is_bound()) { ret_val.areaScopeForUEApplicationLayerMeasurementConfiguration() = single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.valueof(); } if (single_value->field_traceReference.is_bound()) { ret_val.traceReference() = single_value->field_traceReference.valueof(); } if (single_value->field_tracePropagationParameters.is_omit()) ret_val.tracePropagationParameters() = OMIT_VALUE; else if (single_value->field_tracePropagationParameters.is_bound()) { ret_val.tracePropagationParameters() = single_value->field_tracePropagationParameters.valueof(); } if (single_value->field_traceCollectionEntityIPAddress.is_omit()) ret_val.traceCollectionEntityIPAddress() = OMIT_VALUE; else if (single_value->field_traceCollectionEntityIPAddress.is_bound()) { ret_val.traceCollectionEntityIPAddress() = single_value->field_traceCollectionEntityIPAddress.valueof(); } return ret_val; } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template[list_length]; } UE__Application__Layer__Measurement__Configuration__For__Relocation_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return value_list.list_value[list_index]; } AreaScopeForUEApplicationLayerMeasurementConfiguration_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::areaScopeForUEApplicationLayerMeasurementConfiguration() { set_specific(); return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration; } const AreaScopeForUEApplicationLayerMeasurementConfiguration_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::areaScopeForUEApplicationLayerMeasurementConfiguration() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field areaScopeForUEApplicationLayerMeasurementConfiguration of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration; } OCTETSTRING_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::traceReference() { set_specific(); return single_value->field_traceReference; } const OCTETSTRING_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::traceReference() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field traceReference of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return single_value->field_traceReference; } TracePropagationParameters_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::tracePropagationParameters() { set_specific(); return single_value->field_tracePropagationParameters; } const TracePropagationParameters_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::tracePropagationParameters() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tracePropagationParameters of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return single_value->field_tracePropagationParameters; } BITSTRING_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::traceCollectionEntityIPAddress() { set_specific(); return single_value->field_traceCollectionEntityIPAddress; } const BITSTRING_template& UE__Application__Layer__Measurement__Configuration__For__Relocation_template::traceCollectionEntityIPAddress() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field traceCollectionEntityIPAddress of a non-specific template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); return single_value->field_traceCollectionEntityIPAddress; } int UE__Application__Layer__Measurement__Configuration__For__Relocation_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_tracePropagationParameters.is_present()) ret_val++; if (single_value->field_traceCollectionEntityIPAddress.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); } return 0; } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ areaScopeForUEApplicationLayerMeasurementConfiguration := "); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log(); TTCN_Logger::log_event_str(", traceReference := "); single_value->field_traceReference.log(); TTCN_Logger::log_event_str(", tracePropagationParameters := "); single_value->field_tracePropagationParameters.log(); TTCN_Logger::log_event_str(", traceCollectionEntityIPAddress := "); single_value->field_traceCollectionEntityIPAddress.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::log_match(const UE__Application__Layer__Measurement__Configuration__For__Relocation& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy)){ TTCN_Logger::log_logmatch_info(".areaScopeForUEApplicationLayerMeasurementConfiguration"); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log_match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_traceReference.match(match_value.traceReference(), legacy)){ TTCN_Logger::log_logmatch_info(".traceReference"); single_value->field_traceReference.log_match(match_value.traceReference(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.tracePropagationParameters().ispresent()){ if(!single_value->field_tracePropagationParameters.match(match_value.tracePropagationParameters(), legacy)){ TTCN_Logger::log_logmatch_info(".tracePropagationParameters"); single_value->field_tracePropagationParameters.log_match(match_value.tracePropagationParameters(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_tracePropagationParameters.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".tracePropagationParameters := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_tracePropagationParameters.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.traceCollectionEntityIPAddress().ispresent()){ if(!single_value->field_traceCollectionEntityIPAddress.match(match_value.traceCollectionEntityIPAddress(), legacy)){ TTCN_Logger::log_logmatch_info(".traceCollectionEntityIPAddress"); single_value->field_traceCollectionEntityIPAddress.log_match(match_value.traceCollectionEntityIPAddress(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_traceCollectionEntityIPAddress.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".traceCollectionEntityIPAddress := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_traceCollectionEntityIPAddress.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ areaScopeForUEApplicationLayerMeasurementConfiguration := "); single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.log_match(match_value.areaScopeForUEApplicationLayerMeasurementConfiguration(), legacy); TTCN_Logger::log_event_str(", traceReference := "); single_value->field_traceReference.log_match(match_value.traceReference(), legacy); TTCN_Logger::log_event_str(", tracePropagationParameters := "); if (match_value.tracePropagationParameters().ispresent()) { single_value->field_tracePropagationParameters.log_match(match_value.tracePropagationParameters(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_tracePropagationParameters.log(); if (single_value->field_tracePropagationParameters.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", traceCollectionEntityIPAddress := "); if (match_value.traceCollectionEntityIPAddress().ispresent()) { single_value->field_traceCollectionEntityIPAddress.log_match(match_value.traceCollectionEntityIPAddress(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_traceCollectionEntityIPAddress.log(); if (single_value->field_traceCollectionEntityIPAddress.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (areaScopeForUEApplicationLayerMeasurementConfiguration().is_bound()) areaScopeForUEApplicationLayerMeasurementConfiguration().set_implicit_omit(); if (traceReference().is_bound()) traceReference().set_implicit_omit(); if (!tracePropagationParameters().is_bound()) tracePropagationParameters() = OMIT_VALUE; else tracePropagationParameters().set_implicit_omit(); if (!traceCollectionEntityIPAddress().is_bound()) traceCollectionEntityIPAddress() = OMIT_VALUE; else traceCollectionEntityIPAddress().set_implicit_omit(); } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.encode_text(text_buf); single_value->field_traceReference.encode_text(text_buf); single_value->field_tracePropagationParameters.encode_text(text_buf); single_value->field_traceCollectionEntityIPAddress.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); } } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.decode_text(text_buf); single_value->field_traceReference.decode_text(text_buf); single_value->field_tracePropagationParameters.decode_text(text_buf); single_value->field_traceCollectionEntityIPAddress.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation."); } } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { UE__Application__Layer__Measurement__Configuration__For__Relocation_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) traceReference().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) tracePropagationParameters().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) traceCollectionEntityIPAddress().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "areaScopeForUEApplicationLayerMeasurementConfiguration")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { areaScopeForUEApplicationLayerMeasurementConfiguration().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceReference")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceReference().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "tracePropagationParameters")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { tracePropagationParameters().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceCollectionEntityIPAddress")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceCollectionEntityIPAddress().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { UE__Application__Layer__Measurement__Configuration__For__Relocation_template* precondition = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template; precondition->set_param(*param.get_elem(0)); UE__Application__Layer__Measurement__Configuration__For__Relocation_template* implied_template = new UE__Application__Layer__Measurement__Configuration__For__Relocation_template; implied_template->set_param(*param.get_elem(1)); *this = UE__Application__Layer__Measurement__Configuration__For__Relocation_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); } is_ifpresent = param.get_ifpresent(); } void UE__Application__Layer__Measurement__Configuration__For__Relocation_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_areaScopeForUEApplicationLayerMeasurementConfiguration.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); single_value->field_traceReference.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); single_value->field_tracePropagationParameters.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); single_value->field_traceCollectionEntityIPAddress.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.UE-Application-Layer-Measurement-Configuration-For-Relocation"); } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean UE__Application__Layer__Measurement__Configuration__For__Relocation_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idx(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TraceDepth."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.TraceDepth comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean TraceDepth::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TraceDepth."); return enum_value > other_value; } boolean TraceDepth::operator>(const TraceDepth& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.TraceDepth."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.TraceDepth."); return enum_value > other_value.enum_value; } const char *TraceDepth::enum_to_str(enum_type enum_par) { switch (enum_par) { case minimum: return "minimum"; case medium: return "medium"; case maximum: return "maximum"; default: return ""; } } TraceDepth::enum_type TraceDepth::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "minimum")) return minimum; if (!strcmp(str_par, "medium")) return medium; if (!strcmp(str_par, "maximum")) return maximum; } return UNKNOWN_VALUE; } boolean TraceDepth::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: return TRUE; default: return FALSE; } } int TraceDepth::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.TraceDepth.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int TraceDepth::enum2int(const TraceDepth& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.TraceDepth.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void TraceDepth::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.TraceDepth.", int_val); enum_value = (enum_type)int_val; } TraceDepth::operator TraceDepth::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.TraceDepth."); return enum_value; } void TraceDepth::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void TraceDepth::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.TraceDepth"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.TraceDepth."); } } void TraceDepth::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.TraceDepth."); text_buf.push_int(enum_value); } void TraceDepth::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.TraceDepth.", enum_value); } void TraceDepth::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TraceDepth::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* TraceDepth::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean TraceDepth::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.TraceDepth: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int TraceDepth::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.TraceDepth."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int TraceDepth::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = minimum; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int TraceDepth::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.TraceDepth."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int TraceDepth::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void TraceDepth::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case minimum: enc_val = 0; ext_bit = FALSE; break; case medium: enc_val = 1; ext_bit = FALSE; break; case maximum: enc_val = 2; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.TraceDepth."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 2); } void TraceDepth::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 2, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = minimum; break; case 1: enum_value = medium; break; case 2: enum_value = maximum; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.TraceDepth.", dec_int); break; } } void TraceDepth_template::copy_template(const TraceDepth_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new TraceDepth_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new TraceDepth_template(*other_value.implication_.precondition); implication_.implied_template = new TraceDepth_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.TraceDepth."); } } TraceDepth_template::TraceDepth_template() { } TraceDepth_template::TraceDepth_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TraceDepth_template::TraceDepth_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!TraceDepth::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.TraceDepth with unknown numeric value %d.", other_value); single_value = (TraceDepth::enum_type)other_value; } TraceDepth_template::TraceDepth_template(TraceDepth::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } TraceDepth_template::TraceDepth_template(const TraceDepth& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == TraceDepth::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.TraceDepth."); single_value = other_value.enum_value; } TraceDepth_template::TraceDepth_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (TraceDepth::enum_type)(const TraceDepth&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.TraceDepth from an unbound optional field."); } } TraceDepth_template::TraceDepth_template(TraceDepth_template* p_precondition, TraceDepth_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TraceDepth_template::TraceDepth_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TraceDepth_template::TraceDepth_template(const TraceDepth_template& other_value) : Base_Template() { copy_template(other_value); } TraceDepth_template::~TraceDepth_template() { clean_up(); } boolean TraceDepth_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean TraceDepth_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != TraceDepth::UNBOUND_VALUE; } void TraceDepth_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } TraceDepth_template& TraceDepth_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TraceDepth_template& TraceDepth_template::operator=(int other_value) { if (!TraceDepth::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.TraceDepth.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (TraceDepth::enum_type)other_value; return *this; } TraceDepth_template& TraceDepth_template::operator=(TraceDepth::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } TraceDepth_template& TraceDepth_template::operator=(const TraceDepth& other_value) { if (other_value.enum_value == TraceDepth::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.TraceDepth to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } TraceDepth_template& TraceDepth_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (TraceDepth::enum_type)(const TraceDepth&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.TraceDepth."); } return *this; } TraceDepth_template& TraceDepth_template::operator=(const TraceDepth_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TraceDepth_template::match(TraceDepth::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.TraceDepth."); } return FALSE; } boolean TraceDepth_template::match(const TraceDepth& other_value, boolean) const { if (other_value.enum_value == TraceDepth::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.TraceDepth with an unbound value."); return match(other_value.enum_value); } TraceDepth::enum_type TraceDepth_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.TraceDepth."); return single_value; } void TraceDepth_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TraceDepth_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.TraceDepth."); } } TraceDepth_template& TraceDepth_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.TraceDepth."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.TraceDepth."); return value_list.list_value[list_index]; } void TraceDepth_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(TraceDepth::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void TraceDepth_template::log_match(const TraceDepth& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void TraceDepth_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.TraceDepth."); } } void TraceDepth_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (TraceDepth::enum_type)text_buf.pull_int().get_val(); if (!TraceDepth::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.TraceDepth.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new TraceDepth_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.TraceDepth."); } } boolean TraceDepth_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TraceDepth_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { TraceDepth_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { TraceDepth::enum_type enum_val = TraceDepth::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!TraceDepth::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.TraceDepth."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { TraceDepth_template* precondition = new TraceDepth_template; precondition->set_param(*m_p->get_elem(0)); TraceDepth_template* implied_template = new TraceDepth_template; implied_template->set_param(*m_p->get_elem(1)); *this = TraceDepth_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.TraceDepth"); } is_ifpresent = param.get_ifpresent(); } void TraceDepth_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.TraceDepth"); } TracePropagationParameters::TracePropagationParameters() { } TracePropagationParameters::TracePropagationParameters(const INTEGER& par_traceRecordingSessionReference, const TraceDepth& par_traceDepth, const OPTIONAL< ListOfInterfacesToTrace >& par_listOfInterfacesToTrace, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 >& par_iE__Extensions) : field_traceRecordingSessionReference(par_traceRecordingSessionReference), field_traceDepth(par_traceDepth), field_listOfInterfacesToTrace(par_listOfInterfacesToTrace), field_iE__Extensions(par_iE__Extensions) { } TracePropagationParameters::TracePropagationParameters(const TracePropagationParameters& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.TracePropagationParameters."); if (other_value.traceRecordingSessionReference().is_bound()) field_traceRecordingSessionReference = other_value.traceRecordingSessionReference(); else field_traceRecordingSessionReference.clean_up(); if (other_value.traceDepth().is_bound()) field_traceDepth = other_value.traceDepth(); else field_traceDepth.clean_up(); if (other_value.listOfInterfacesToTrace().is_bound()) field_listOfInterfacesToTrace = other_value.listOfInterfacesToTrace(); else field_listOfInterfacesToTrace.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void TracePropagationParameters::clean_up() { field_traceRecordingSessionReference.clean_up(); field_traceDepth.clean_up(); field_listOfInterfacesToTrace.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* TracePropagationParameters::get_descriptor() const { return &TracePropagationParameters_descr_; } TracePropagationParameters& TracePropagationParameters::operator=(const TracePropagationParameters& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.TracePropagationParameters."); if (other_value.traceRecordingSessionReference().is_bound()) field_traceRecordingSessionReference = other_value.traceRecordingSessionReference(); else field_traceRecordingSessionReference.clean_up(); if (other_value.traceDepth().is_bound()) field_traceDepth = other_value.traceDepth(); else field_traceDepth.clean_up(); if (other_value.listOfInterfacesToTrace().is_bound()) field_listOfInterfacesToTrace = other_value.listOfInterfacesToTrace(); else field_listOfInterfacesToTrace.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean TracePropagationParameters::operator==(const TracePropagationParameters& other_value) const { return field_traceRecordingSessionReference==other_value.field_traceRecordingSessionReference && field_traceDepth==other_value.field_traceDepth && field_listOfInterfacesToTrace==other_value.field_listOfInterfacesToTrace && field_iE__Extensions==other_value.field_iE__Extensions; } boolean TracePropagationParameters::is_bound() const { return (field_traceRecordingSessionReference.is_bound()) || (field_traceDepth.is_bound()) || (OPTIONAL_OMIT == field_listOfInterfacesToTrace.get_selection() || field_listOfInterfacesToTrace.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean TracePropagationParameters::is_value() const { return field_traceRecordingSessionReference.is_value() && field_traceDepth.is_value() && (OPTIONAL_OMIT == field_listOfInterfacesToTrace.get_selection() || field_listOfInterfacesToTrace.is_value()) && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int TracePropagationParameters::size_of() const { int ret_val = 2; if (field_listOfInterfacesToTrace.ispresent()) ret_val++; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void TracePropagationParameters::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ traceRecordingSessionReference := "); field_traceRecordingSessionReference.log(); TTCN_Logger::log_event_str(", traceDepth := "); field_traceDepth.log(); TTCN_Logger::log_event_str(", listOfInterfacesToTrace := "); field_listOfInterfacesToTrace.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void TracePropagationParameters::set_implicit_omit() { if (traceRecordingSessionReference().is_bound()) traceRecordingSessionReference().set_implicit_omit(); if (traceDepth().is_bound()) traceDepth().set_implicit_omit(); if (!listOfInterfacesToTrace().is_bound()) listOfInterfacesToTrace() = OMIT_VALUE; else listOfInterfacesToTrace().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void TracePropagationParameters::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (40 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) traceRecordingSessionReference().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) traceDepth().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listOfInterfacesToTrace().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "traceRecordingSessionReference")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceRecordingSessionReference().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceDepth")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceDepth().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "listOfInterfacesToTrace")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { listOfInterfacesToTrace().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.TracePropagationParameters: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.TracePropagationParameters"); } } void TracePropagationParameters::encode_text(Text_Buf& text_buf) const { field_traceRecordingSessionReference.encode_text(text_buf); field_traceDepth.encode_text(text_buf); field_listOfInterfacesToTrace.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void TracePropagationParameters::decode_text(Text_Buf& text_buf) { field_traceRecordingSessionReference.decode_text(text_buf); field_traceDepth.decode_text(text_buf); field_listOfInterfacesToTrace.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void TracePropagationParameters::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void TracePropagationParameters::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* TracePropagationParameters::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("traceRecordingSessionReference': "); new_tlv->add_TLV(field_traceRecordingSessionReference.BER_encode_TLV(TracePropagationParameters_traceRecordingSessionReference_descr_, p_coding)); ec_1.set_msg("traceDepth': "); new_tlv->add_TLV(field_traceDepth.BER_encode_TLV(TracePropagationParameters_traceDepth_descr_, p_coding)); ec_1.set_msg("listOfInterfacesToTrace': "); new_tlv->add_TLV(field_listOfInterfacesToTrace.BER_encode_TLV(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(TracePropagationParameters_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean TracePropagationParameters::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.TracePropagationParameters' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("traceRecordingSessionReference': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_traceRecordingSessionReference.BER_decode_TLV(TracePropagationParameters_traceRecordingSessionReference_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("traceDepth': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_traceDepth.BER_decode_TLV(TracePropagationParameters_traceDepth_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("listOfInterfacesToTrace': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_listOfInterfacesToTrace=OMIT_VALUE; else { field_listOfInterfacesToTrace.BER_decode_TLV(TracePropagationParameters_listOfInterfacesToTrace_descr_, tmp_tlv, L_form); if(field_listOfInterfacesToTrace.ispresent()) tlv_present=FALSE; } ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(TracePropagationParameters_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int TracePropagationParameters::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.TracePropagationParameters."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "traceRecordingSessionReference"); enc_len += field_traceRecordingSessionReference.JSON_encode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "traceDepth"); enc_len += field_traceDepth.JSON_encode(TracePropagationParameters_traceDepth_descr_, p_tok, FALSE); } if (field_listOfInterfacesToTrace.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "listOfInterfacesToTrace"); enc_len += field_listOfInterfacesToTrace.JSON_encode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(TracePropagationParameters_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int TracePropagationParameters::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean traceRecordingSessionReference_found = FALSE; boolean traceDepth_found = FALSE; boolean listOfInterfacesToTrace_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (30 == name_len && 0 == strncmp(fld_name, "traceRecordingSessionReference", name_len)) { traceRecordingSessionReference_found = TRUE; int ret_val = field_traceRecordingSessionReference.JSON_decode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 30, "traceRecordingSessionReference"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (10 == name_len && 0 == strncmp(fld_name, "traceDepth", name_len)) { traceDepth_found = TRUE; int ret_val = field_traceDepth.JSON_decode(TracePropagationParameters_traceDepth_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 10, "traceDepth"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (23 == name_len && 0 == strncmp(fld_name, "listOfInterfacesToTrace", name_len)) { listOfInterfacesToTrace_found = TRUE; int ret_val = field_listOfInterfacesToTrace.JSON_decode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 23, "listOfInterfacesToTrace"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(TracePropagationParameters_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!traceRecordingSessionReference_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "traceRecordingSessionReference"); return JSON_ERROR_FATAL; } if (!traceDepth_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "traceDepth"); return JSON_ERROR_FATAL; } if (!listOfInterfacesToTrace_found) { field_listOfInterfacesToTrace = OMIT_VALUE; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int TracePropagationParameters::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_listOfInterfacesToTrace.is_present()) { c |= 64; } if (field_iE__Extensions.is_present()) { c |= 32; } p_buf.put_c(c); field_traceRecordingSessionReference.OER_encode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_buf); field_traceDepth.OER_encode(TracePropagationParameters_traceDepth_descr_, p_buf); if (field_listOfInterfacesToTrace.is_present()) field_listOfInterfacesToTrace.OER_encode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(TracePropagationParameters_iE__Extensions_descr_, p_buf); return 0; } int TracePropagationParameters::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_traceRecordingSessionReference.OER_decode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_buf, p_oer); field_traceDepth.OER_decode(TracePropagationParameters_traceDepth_descr_, p_buf, p_oer); if (uc[0] & 64) field_listOfInterfacesToTrace.OER_decode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_buf, p_oer); else field_listOfInterfacesToTrace = OMIT_VALUE; if (uc[0] & 32) field_iE__Extensions.OER_decode(TracePropagationParameters_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void TracePropagationParameters::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_listOfInterfacesToTrace_present = field_listOfInterfacesToTrace.is_present(); p_buf.PER_put_bit(field_listOfInterfacesToTrace_present); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_traceRecordingSessionReference.PER_encode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_buf, p_options); field_traceDepth.PER_encode(TracePropagationParameters_traceDepth_descr_, p_buf, p_options); if (field_listOfInterfacesToTrace_present) field_listOfInterfacesToTrace.PER_encode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(TracePropagationParameters_iE__Extensions_descr_, p_buf, p_options); } void TracePropagationParameters::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_listOfInterfacesToTrace_present = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_traceRecordingSessionReference.PER_decode(TracePropagationParameters_traceRecordingSessionReference_descr_, p_buf, p_options); field_traceDepth.PER_decode(TracePropagationParameters_traceDepth_descr_, p_buf, p_options); if (field_listOfInterfacesToTrace_present) field_listOfInterfacesToTrace.PER_decode(TracePropagationParameters_listOfInterfacesToTrace_descr_, p_buf, p_options); else field_listOfInterfacesToTrace = OMIT_VALUE; if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(TracePropagationParameters_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct TracePropagationParameters_template::single_value_struct { INTEGER_template field_traceRecordingSessionReference; TraceDepth_template field_traceDepth; ListOfInterfacesToTrace_template field_listOfInterfacesToTrace; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template field_iE__Extensions; }; void TracePropagationParameters_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_traceRecordingSessionReference = ANY_VALUE; single_value->field_traceDepth = ANY_VALUE; single_value->field_listOfInterfacesToTrace = ANY_OR_OMIT; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void TracePropagationParameters_template::copy_value(const TracePropagationParameters& other_value) { single_value = new single_value_struct; if (other_value.traceRecordingSessionReference().is_bound()) { single_value->field_traceRecordingSessionReference = other_value.traceRecordingSessionReference(); } else { single_value->field_traceRecordingSessionReference.clean_up(); } if (other_value.traceDepth().is_bound()) { single_value->field_traceDepth = other_value.traceDepth(); } else { single_value->field_traceDepth.clean_up(); } if (other_value.listOfInterfacesToTrace().is_bound()) { if (other_value.listOfInterfacesToTrace().ispresent()) single_value->field_listOfInterfacesToTrace = other_value.listOfInterfacesToTrace()(); else single_value->field_listOfInterfacesToTrace = OMIT_VALUE; } else { single_value->field_listOfInterfacesToTrace.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void TracePropagationParameters_template::copy_template(const TracePropagationParameters_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.traceRecordingSessionReference().get_selection()) { single_value->field_traceRecordingSessionReference = other_value.traceRecordingSessionReference(); } else { single_value->field_traceRecordingSessionReference.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.traceDepth().get_selection()) { single_value->field_traceDepth = other_value.traceDepth(); } else { single_value->field_traceDepth.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.listOfInterfacesToTrace().get_selection()) { single_value->field_listOfInterfacesToTrace = other_value.listOfInterfacesToTrace(); } else { single_value->field_listOfInterfacesToTrace.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new TracePropagationParameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new TracePropagationParameters_template(*other_value.implication_.precondition); implication_.implied_template = new TracePropagationParameters_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.TracePropagationParameters."); break; } set_selection(other_value); } TracePropagationParameters_template::TracePropagationParameters_template() { } TracePropagationParameters_template::TracePropagationParameters_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } TracePropagationParameters_template::TracePropagationParameters_template(const TracePropagationParameters& other_value) { copy_value(other_value); } TracePropagationParameters_template::TracePropagationParameters_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TracePropagationParameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.TracePropagationParameters from an unbound optional field."); } } TracePropagationParameters_template::TracePropagationParameters_template(TracePropagationParameters_template* p_precondition, TracePropagationParameters_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } TracePropagationParameters_template::TracePropagationParameters_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } TracePropagationParameters_template::TracePropagationParameters_template(const TracePropagationParameters_template& other_value) : Base_Template() { copy_template(other_value); } TracePropagationParameters_template::~TracePropagationParameters_template() { clean_up(); } TracePropagationParameters_template& TracePropagationParameters_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } TracePropagationParameters_template& TracePropagationParameters_template::operator=(const TracePropagationParameters& other_value) { clean_up(); copy_value(other_value); return *this; } TracePropagationParameters_template& TracePropagationParameters_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const TracePropagationParameters&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.TracePropagationParameters."); } return *this; } TracePropagationParameters_template& TracePropagationParameters_template::operator=(const TracePropagationParameters_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean TracePropagationParameters_template::match(const TracePropagationParameters& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.traceRecordingSessionReference().is_bound()) return FALSE; if(!single_value->field_traceRecordingSessionReference.match(other_value.traceRecordingSessionReference(), legacy))return FALSE; if(!other_value.traceDepth().is_bound()) return FALSE; if(!single_value->field_traceDepth.match(other_value.traceDepth(), legacy))return FALSE; if(!other_value.listOfInterfacesToTrace().is_bound()) return FALSE; if((other_value.listOfInterfacesToTrace().ispresent() ? !single_value->field_listOfInterfacesToTrace.match((const ListOfInterfacesToTrace&)other_value.listOfInterfacesToTrace(), legacy) : !single_value->field_listOfInterfacesToTrace.match_omit(legacy)))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.TracePropagationParameters."); } return FALSE; } boolean TracePropagationParameters_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_traceRecordingSessionReference.is_bound() || single_value->field_traceDepth.is_bound() || (single_value->field_listOfInterfacesToTrace.is_omit() || single_value->field_listOfInterfacesToTrace.is_bound()) || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean TracePropagationParameters_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_traceRecordingSessionReference.is_value() && single_value->field_traceDepth.is_value() && (single_value->field_listOfInterfacesToTrace.is_omit() || single_value->field_listOfInterfacesToTrace.is_value()) && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void TracePropagationParameters_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } TracePropagationParameters TracePropagationParameters_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.TracePropagationParameters."); TracePropagationParameters ret_val; if (single_value->field_traceRecordingSessionReference.is_bound()) { ret_val.traceRecordingSessionReference() = single_value->field_traceRecordingSessionReference.valueof(); } if (single_value->field_traceDepth.is_bound()) { ret_val.traceDepth() = single_value->field_traceDepth.valueof(); } if (single_value->field_listOfInterfacesToTrace.is_omit()) ret_val.listOfInterfacesToTrace() = OMIT_VALUE; else if (single_value->field_listOfInterfacesToTrace.is_bound()) { ret_val.listOfInterfacesToTrace() = single_value->field_listOfInterfacesToTrace.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void TracePropagationParameters_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.TracePropagationParameters."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new TracePropagationParameters_template[list_length]; } TracePropagationParameters_template& TracePropagationParameters_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.TracePropagationParameters."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.TracePropagationParameters."); return value_list.list_value[list_index]; } INTEGER_template& TracePropagationParameters_template::traceRecordingSessionReference() { set_specific(); return single_value->field_traceRecordingSessionReference; } const INTEGER_template& TracePropagationParameters_template::traceRecordingSessionReference() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field traceRecordingSessionReference of a non-specific template of type @RANAP-IEs.TracePropagationParameters."); return single_value->field_traceRecordingSessionReference; } TraceDepth_template& TracePropagationParameters_template::traceDepth() { set_specific(); return single_value->field_traceDepth; } const TraceDepth_template& TracePropagationParameters_template::traceDepth() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field traceDepth of a non-specific template of type @RANAP-IEs.TracePropagationParameters."); return single_value->field_traceDepth; } ListOfInterfacesToTrace_template& TracePropagationParameters_template::listOfInterfacesToTrace() { set_specific(); return single_value->field_listOfInterfacesToTrace; } const ListOfInterfacesToTrace_template& TracePropagationParameters_template::listOfInterfacesToTrace() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field listOfInterfacesToTrace of a non-specific template of type @RANAP-IEs.TracePropagationParameters."); return single_value->field_listOfInterfacesToTrace; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& TracePropagationParameters_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& TracePropagationParameters_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.TracePropagationParameters."); return single_value->field_iE__Extensions; } int TracePropagationParameters_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 2; if (single_value->field_listOfInterfacesToTrace.is_present()) ret_val++; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.TracePropagationParameters containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.TracePropagationParameters."); } return 0; } void TracePropagationParameters_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ traceRecordingSessionReference := "); single_value->field_traceRecordingSessionReference.log(); TTCN_Logger::log_event_str(", traceDepth := "); single_value->field_traceDepth.log(); TTCN_Logger::log_event_str(", listOfInterfacesToTrace := "); single_value->field_listOfInterfacesToTrace.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void TracePropagationParameters_template::log_match(const TracePropagationParameters& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_traceRecordingSessionReference.match(match_value.traceRecordingSessionReference(), legacy)){ TTCN_Logger::log_logmatch_info(".traceRecordingSessionReference"); single_value->field_traceRecordingSessionReference.log_match(match_value.traceRecordingSessionReference(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_traceDepth.match(match_value.traceDepth(), legacy)){ TTCN_Logger::log_logmatch_info(".traceDepth"); single_value->field_traceDepth.log_match(match_value.traceDepth(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.listOfInterfacesToTrace().ispresent()){ if(!single_value->field_listOfInterfacesToTrace.match(match_value.listOfInterfacesToTrace(), legacy)){ TTCN_Logger::log_logmatch_info(".listOfInterfacesToTrace"); single_value->field_listOfInterfacesToTrace.log_match(match_value.listOfInterfacesToTrace(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_listOfInterfacesToTrace.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".listOfInterfacesToTrace := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_listOfInterfacesToTrace.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ traceRecordingSessionReference := "); single_value->field_traceRecordingSessionReference.log_match(match_value.traceRecordingSessionReference(), legacy); TTCN_Logger::log_event_str(", traceDepth := "); single_value->field_traceDepth.log_match(match_value.traceDepth(), legacy); TTCN_Logger::log_event_str(", listOfInterfacesToTrace := "); if (match_value.listOfInterfacesToTrace().ispresent()) { single_value->field_listOfInterfacesToTrace.log_match(match_value.listOfInterfacesToTrace(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_listOfInterfacesToTrace.log(); if (single_value->field_listOfInterfacesToTrace.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void TracePropagationParameters_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (traceRecordingSessionReference().is_bound()) traceRecordingSessionReference().set_implicit_omit(); if (traceDepth().is_bound()) traceDepth().set_implicit_omit(); if (!listOfInterfacesToTrace().is_bound()) listOfInterfacesToTrace() = OMIT_VALUE; else listOfInterfacesToTrace().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void TracePropagationParameters_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_traceRecordingSessionReference.encode_text(text_buf); single_value->field_traceDepth.encode_text(text_buf); single_value->field_listOfInterfacesToTrace.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.TracePropagationParameters."); } } void TracePropagationParameters_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_traceRecordingSessionReference.decode_text(text_buf); single_value->field_traceDepth.decode_text(text_buf); single_value->field_listOfInterfacesToTrace.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new TracePropagationParameters_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.TracePropagationParameters."); } } void TracePropagationParameters_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { TracePropagationParameters_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) traceRecordingSessionReference().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) traceDepth().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listOfInterfacesToTrace().set_param(*param.get_elem(2)); if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(3)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "traceRecordingSessionReference")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceRecordingSessionReference().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "traceDepth")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { traceDepth().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "listOfInterfacesToTrace")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { listOfInterfacesToTrace().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.TracePropagationParameters: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { TracePropagationParameters_template* precondition = new TracePropagationParameters_template; precondition->set_param(*param.get_elem(0)); TracePropagationParameters_template* implied_template = new TracePropagationParameters_template; implied_template->set_param(*param.get_elem(1)); *this = TracePropagationParameters_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.TracePropagationParameters"); } is_ifpresent = param.get_ifpresent(); } void TracePropagationParameters_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_traceRecordingSessionReference.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.TracePropagationParameters"); single_value->field_traceDepth.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.TracePropagationParameters"); single_value->field_listOfInterfacesToTrace.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.TracePropagationParameters"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.TracePropagationParameters"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.TracePropagationParameters"); } boolean TracePropagationParameters_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean TracePropagationParameters_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } ListOfInterfacesToTrace::ListOfInterfacesToTrace(const ListOfInterfacesToTrace& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } ListOfInterfacesToTrace::~ListOfInterfacesToTrace() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void ListOfInterfacesToTrace::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } ListOfInterfacesToTrace& ListOfInterfacesToTrace::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } ListOfInterfacesToTrace& ListOfInterfacesToTrace::operator=(const ListOfInterfacesToTrace& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean ListOfInterfacesToTrace::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); return val_ptr->n_elements == 0 ; } boolean ListOfInterfacesToTrace::operator==(const ListOfInterfacesToTrace& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } InterfacesToTraceItem& ListOfInterfacesToTrace::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ListOfInterfacesToTrace using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (InterfacesToTraceItem**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new InterfacesToTraceItem(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new InterfacesToTraceItem; } return *val_ptr->value_elements[index_value]; } InterfacesToTraceItem& ListOfInterfacesToTrace::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ListOfInterfacesToTrace."); return (*this)[(int)index_value]; } const InterfacesToTraceItem& ListOfInterfacesToTrace::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ListOfInterfacesToTrace using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ListOfInterfacesToTrace: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const InterfacesToTraceItem& ListOfInterfacesToTrace::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ListOfInterfacesToTrace."); return (*this)[(int)index_value]; } ListOfInterfacesToTrace ListOfInterfacesToTrace::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } ListOfInterfacesToTrace ListOfInterfacesToTrace::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } ListOfInterfacesToTrace ListOfInterfacesToTrace::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } ListOfInterfacesToTrace ListOfInterfacesToTrace::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; ListOfInterfacesToTrace ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new InterfacesToTraceItem(*val_ptr->value_elements[i]); } } return ret_val; } ListOfInterfacesToTrace ListOfInterfacesToTrace::operator+(const ListOfInterfacesToTrace& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ListOfInterfacesToTrace concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; ListOfInterfacesToTrace ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new InterfacesToTraceItem(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new InterfacesToTraceItem(*other_value.val_ptr->value_elements[i]); } } return ret_val; } ListOfInterfacesToTrace ListOfInterfacesToTrace::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ListOfInterfacesToTrace","element"); ListOfInterfacesToTrace ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new InterfacesToTraceItem(*val_ptr->value_elements[i+index]); } } return ret_val; } ListOfInterfacesToTrace ListOfInterfacesToTrace::replace(int index, int len, const ListOfInterfacesToTrace& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ListOfInterfacesToTrace","element"); ListOfInterfacesToTrace ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new InterfacesToTraceItem(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new InterfacesToTraceItem(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new InterfacesToTraceItem(*val_ptr->value_elements[index+i+len]); } } return ret_val; } ListOfInterfacesToTrace ListOfInterfacesToTrace::replace(int index, int len, const ListOfInterfacesToTrace_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void ListOfInterfacesToTrace::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ListOfInterfacesToTrace."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (InterfacesToTraceItem**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new InterfacesToTraceItem(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (InterfacesToTraceItem**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ListOfInterfacesToTrace: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (InterfacesToTraceItem**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean ListOfInterfacesToTrace::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int ListOfInterfacesToTrace::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); return val_ptr->n_elements; } int ListOfInterfacesToTrace::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void ListOfInterfacesToTrace::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void ListOfInterfacesToTrace::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void ListOfInterfacesToTrace::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ListOfInterfacesToTrace"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ListOfInterfacesToTrace"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void ListOfInterfacesToTrace::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void ListOfInterfacesToTrace::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ListOfInterfacesToTrace."); val_ptr->value_elements = (InterfacesToTraceItem**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new InterfacesToTraceItem; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void ListOfInterfacesToTrace::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void ListOfInterfacesToTrace::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* ListOfInterfacesToTrace::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean ListOfInterfacesToTrace::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (InterfacesToTraceItem**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new InterfacesToTraceItem; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int ListOfInterfacesToTrace::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int ListOfInterfacesToTrace::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } InterfacesToTraceItem* val = new InterfacesToTraceItem; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (InterfacesToTraceItem**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int ListOfInterfacesToTrace::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ListOfInterfacesToTrace."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int ListOfInterfacesToTrace::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void ListOfInterfacesToTrace::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void ListOfInterfacesToTrace::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void ListOfInterfacesToTrace_template::copy_value(const ListOfInterfacesToTrace& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ListOfInterfacesToTrace with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (InterfacesToTraceItem_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new InterfacesToTraceItem_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new InterfacesToTraceItem_template; } } set_selection(SPECIFIC_VALUE); } void ListOfInterfacesToTrace_template::copy_template(const ListOfInterfacesToTrace_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (InterfacesToTraceItem_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new InterfacesToTraceItem_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new InterfacesToTraceItem_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new ListOfInterfacesToTrace_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new ListOfInterfacesToTrace_template(*other_value.implication_.precondition); implication_.implied_template = new ListOfInterfacesToTrace_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ListOfInterfacesToTrace."); break; } set_selection(other_value); } boolean ListOfInterfacesToTrace_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const ListOfInterfacesToTrace_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ListOfInterfacesToTrace*)value_ptr)[value_index], legacy); else return ((const ListOfInterfacesToTrace_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template() { } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(const ListOfInterfacesToTrace& other_value) { copy_value(other_value); } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ListOfInterfacesToTrace&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ListOfInterfacesToTrace from an unbound optional field."); } } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(ListOfInterfacesToTrace_template* p_precondition, ListOfInterfacesToTrace_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(Dynamic_Match_Interface* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } ListOfInterfacesToTrace_template::ListOfInterfacesToTrace_template(const ListOfInterfacesToTrace_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } ListOfInterfacesToTrace_template::~ListOfInterfacesToTrace_template() { clean_up(); } void ListOfInterfacesToTrace_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::operator=(const ListOfInterfacesToTrace& other_value) { clean_up(); copy_value(other_value); return *this; } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const ListOfInterfacesToTrace&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ListOfInterfacesToTrace."); } return *this; } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::operator=(const ListOfInterfacesToTrace_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } InterfacesToTraceItem_template& ListOfInterfacesToTrace_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ListOfInterfacesToTrace using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ListOfInterfacesToTrace."); break; } return *single_value.value_elements[index_value]; } InterfacesToTraceItem_template& ListOfInterfacesToTrace_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ListOfInterfacesToTrace."); return (*this)[(int)index_value]; } const InterfacesToTraceItem_template& ListOfInterfacesToTrace_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ListOfInterfacesToTrace using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ListOfInterfacesToTrace."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ListOfInterfacesToTrace: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const InterfacesToTraceItem_template& ListOfInterfacesToTrace_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ListOfInterfacesToTrace."); return (*this)[(int)index_value]; } void ListOfInterfacesToTrace_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ListOfInterfacesToTrace."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (InterfacesToTraceItem_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new InterfacesToTraceItem_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new InterfacesToTraceItem_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (InterfacesToTraceItem_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int ListOfInterfacesToTrace_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int ListOfInterfacesToTrace_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ListOfInterfacesToTrace containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ListOfInterfacesToTrace.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ListOfInterfacesToTrace"); } boolean ListOfInterfacesToTrace_template::match(const ListOfInterfacesToTrace& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ListOfInterfacesToTrace."); } return FALSE; } boolean ListOfInterfacesToTrace_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } ListOfInterfacesToTrace ListOfInterfacesToTrace_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ListOfInterfacesToTrace."); ListOfInterfacesToTrace ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } ListOfInterfacesToTrace ListOfInterfacesToTrace_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } ListOfInterfacesToTrace ListOfInterfacesToTrace_template::replace(int index, int len, const ListOfInterfacesToTrace_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } ListOfInterfacesToTrace ListOfInterfacesToTrace_template::replace(int index, int len, const ListOfInterfacesToTrace& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void ListOfInterfacesToTrace_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new ListOfInterfacesToTrace_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ListOfInterfacesToTrace."); } set_selection(template_type); } ListOfInterfacesToTrace_template& ListOfInterfacesToTrace_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ListOfInterfacesToTrace."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ListOfInterfacesToTrace."); return value_list.list_value[list_index]; } void ListOfInterfacesToTrace_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void ListOfInterfacesToTrace_template::log_match(const ListOfInterfacesToTrace& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void ListOfInterfacesToTrace_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ListOfInterfacesToTrace."); } } void ListOfInterfacesToTrace_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ListOfInterfacesToTrace."); single_value.value_elements = (InterfacesToTraceItem_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new InterfacesToTraceItem_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new ListOfInterfacesToTrace_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ListOfInterfacesToTrace."); } } boolean ListOfInterfacesToTrace_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean ListOfInterfacesToTrace_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void ListOfInterfacesToTrace_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { ListOfInterfacesToTrace_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { ListOfInterfacesToTrace_template* precondition = new ListOfInterfacesToTrace_template; precondition->set_param(*param.get_elem(0)); ListOfInterfacesToTrace_template* implied_template = new ListOfInterfacesToTrace_template; implied_template->set_param(*param.get_elem(1)); *this = ListOfInterfacesToTrace_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ListOfInterfacesToTrace"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void ListOfInterfacesToTrace_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ListOfInterfacesToTrace"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ListOfInterfacesToTrace"); } boolean ListOfInterfacesToTrace_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } InterfacesToTraceItem_interface::InterfacesToTraceItem_interface() { enum_value = UNBOUND_VALUE; } InterfacesToTraceItem_interface::InterfacesToTraceItem_interface(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface with invalid numeric value %d.", other_value); enum_value = (enum_type)other_value; } InterfacesToTraceItem_interface::InterfacesToTraceItem_interface(enum_type other_value) { enum_value = other_value; } InterfacesToTraceItem_interface::InterfacesToTraceItem_interface(const InterfacesToTraceItem_interface& other_value) : Base_Type() { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); enum_value = other_value.enum_value; } InterfacesToTraceItem_interface& InterfacesToTraceItem_interface::operator=(int other_value) { if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", other_value); enum_value = (enum_type)other_value; return *this; } InterfacesToTraceItem_interface& InterfacesToTraceItem_interface::operator=(enum_type other_value) { enum_value = other_value; return *this; } InterfacesToTraceItem_interface& InterfacesToTraceItem_interface::operator=(const InterfacesToTraceItem_interface& other_value) { if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); enum_value = other_value.enum_value; return *this; } boolean InterfacesToTraceItem_interface::operator==(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface comparison is an unknown numeric value %d", other_value); return enum_value == other_value; } boolean InterfacesToTraceItem_interface::operator==(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value == other_value; } boolean InterfacesToTraceItem_interface::operator==(const InterfacesToTraceItem_interface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value == other_value.enum_value; } boolean InterfacesToTraceItem_interface::operator<(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface comparison is an unknown numeric value %d", other_value); return enum_value < other_value; } boolean InterfacesToTraceItem_interface::operator<(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value < other_value; } boolean InterfacesToTraceItem_interface::operator<(const InterfacesToTraceItem_interface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value < other_value.enum_value; } boolean InterfacesToTraceItem_interface::operator>(int other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (!is_valid_enum(other_value)) TTCN_error("The right operand of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface comparison is an unknown numeric value %d", other_value); return enum_value > other_value; } boolean InterfacesToTraceItem_interface::operator>(enum_type other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value > other_value; } boolean InterfacesToTraceItem_interface::operator>(const InterfacesToTraceItem_interface& other_value) const { if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value > other_value.enum_value; } const char *InterfacesToTraceItem_interface::enum_to_str(enum_type enum_par) { switch (enum_par) { case iu__cs: return "iu_cs"; case iu__ps: return "iu_ps"; case iur: return "iur"; case iub: return "iub"; case uu: return "uu"; default: return ""; } } InterfacesToTraceItem_interface::enum_type InterfacesToTraceItem_interface::str_to_enum(const char *str_par, const int* int_par, const int* int_par2) { if (int_par == NULL && int_par2 == NULL) { if (!strcmp(str_par, "iu_cs")) return iu__cs; if (!strcmp(str_par, "iu_ps")) return iu__ps; if (!strcmp(str_par, "iur")) return iur; if (!strcmp(str_par, "iub")) return iub; if (!strcmp(str_par, "uu")) return uu; } return UNKNOWN_VALUE; } boolean InterfacesToTraceItem_interface::is_valid_enum(int int_par) { switch (int_par) { case 0: case 1: case 2: case 3: case 4: return TRUE; default: return FALSE; } } int InterfacesToTraceItem_interface::enum2int(enum_type enum_par) { if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par; } int InterfacesToTraceItem_interface::enum2int(const InterfacesToTraceItem_interface& enum_par) { if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); return enum_par.enum_value; } void InterfacesToTraceItem_interface::int2enum(int int_val) { if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", int_val); enum_value = (enum_type)int_val; } InterfacesToTraceItem_interface::operator InterfacesToTraceItem_interface::enum_type() const { if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return enum_value; } void InterfacesToTraceItem_interface::log() const { if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value); else TTCN_Logger::log_event_unbound(); } void InterfacesToTraceItem_interface::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "enumerated value"); if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@RANAP-IEs.InterfacesToTraceItem.interface"); enum_value = str_to_enum(param.get_enumerated(), param.get_enumerated_value()); if (!is_valid_enum(enum_value)) { param.error("Invalid enumerated value for type @RANAP-IEs.InterfacesToTraceItem.interface."); } } void InterfacesToTraceItem_interface::encode_text(Text_Buf& text_buf) const { if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); text_buf.push_int(enum_value); } void InterfacesToTraceItem_interface::decode_text(Text_Buf& text_buf) { enum_value = (enum_type)text_buf.pull_int().get_val(); if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", enum_value); } void InterfacesToTraceItem_interface::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void InterfacesToTraceItem_interface::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* InterfacesToTraceItem_interface::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { BER_encode_chk_enum_valid(p_td, is_valid_enum(enum_value), enum_value); new_tlv=BER_encode_TLV_INTEGER(p_coding, enum_value); } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean InterfacesToTraceItem_interface::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { enum_value = UNBOUND_VALUE; BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec("While decoding ENUMERATED type @RANAP-IEs.InterfacesToTraceItem.interface: "); int tmp_mfr; if (BER_decode_TLV_INTEGER(stripped_tlv, L_form, tmp_mfr)) { BER_decode_chk_enum_valid(p_td, is_valid_enum(tmp_mfr), tmp_mfr); enum_value = (enum_type)tmp_mfr; return TRUE; } else return FALSE; } int InterfacesToTraceItem_interface::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return -1; } if (p_td.json->use_null) { return p_tok.put_next_token(JSON_TOKEN_LITERAL_NULL); } char* tmp_str; if (p_td.json->as_number) { tmp_str = mprintf("%d", enum_value); } else { boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (p_td.json->enum_texts[i].index == enum_value) { tmp_str = mprintf("\"%s\"", p_td.json->enum_texts[i].text); text_found = true; break; } } if (!text_found) { tmp_str = mprintf("\"%s\"", enum_to_str(enum_value)); } } int enc_len = p_tok.put_next_token(p_td.json->as_number ? JSON_TOKEN_NUMBER : JSON_TOKEN_STRING, tmp_str); Free(tmp_str); return enc_len; } int InterfacesToTraceItem_interface::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { json_token_t token = JSON_TOKEN_NONE; char* value = 0; size_t value_len = 0; boolean error = FALSE; size_t dec_len = 0; boolean use_default = FALSE; if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return dec_len; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { value = const_cast(p_td.json->default_value.str); value_len = strlen(value); use_default = TRUE; } else { dec_len = p_tok.get_next_token(&token, &value, &value_len); } if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_LITERAL_NULL == token && p_td.json->use_null) { enum_value = iu__cs; } else if (!p_td.json->use_null && ((JSON_TOKEN_STRING == token && !p_td.json->as_number) || use_default)) { if (use_default || (value_len > 2 && value[0] == '\"' && value[value_len - 1] == '\"')) { if (!use_default) value[value_len - 1] = 0; boolean text_found = false; for (size_t i = 0; i < p_td.json->nof_enum_texts; ++i) { if (strcmp(p_td.json->enum_texts[i].text, value + (use_default ? 0 : 1)) == 0) { enum_value = static_cast(p_td.json->enum_texts[i].index); text_found = true; break; } } if (!text_found) { enum_value = str_to_enum(value + (use_default ? 0 : 1)); } if (!use_default) value[value_len - 1] = '\"'; if (UNKNOWN_VALUE == enum_value) { error = TRUE; } } else { error = TRUE; } } else if (!p_td.json->use_null && JSON_TOKEN_NUMBER == token && p_td.json->as_number) { char* value_str = mcopystrn(value, value_len); int number = atoi(value_str); if (strchr(value_str, '.') != NULL || strchr(value_str, 'e') != NULL || strchr(value_str, 'E') != NULL) { error = TRUE; } else if (is_valid_enum(number)) { enum_value = static_cast(number); } else { error = TRUE; } Free(value_str); } else { enum_value = UNBOUND_VALUE; return JSON_ERROR_INVALID_TOKEN; } if (error) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FORMAT_ERROR, p_td.json->as_number ? "number" : "string", "enumerated"); enum_value = UNBOUND_VALUE; return JSON_ERROR_FATAL; } return (int)dec_len; } int InterfacesToTraceItem_interface::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (enum_value == UNBOUND_VALUE) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return -1; } if (enum_value >= 0 && enum_value < 128) { char c = enum_value; p_buf.put_c(c); } else { INTEGER intval(enum_value); TTCN_Buffer buf; intval.OER_encode(INTEGER_descr_, buf); unsigned char* uc = const_cast(buf.get_data()); *uc |= 1 << 7; p_buf.put_buf(buf); } return 0; } int InterfacesToTraceItem_interface::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); if (!(uc[0] & 0x80)) { if (is_valid_enum(uc[0])) { enum_value = static_cast(uc[0]); } else { enum_value = UNKNOWN_VALUE; } p_buf.increase_pos(1); } else { unsigned char* uc2 = const_cast(p_buf.get_read_data()); uc2[0] &= ~0x80; INTEGER intval; intval.OER_decode(INTEGER_descr_, p_buf, p_oer); if (is_valid_enum(intval.get_val().get_val())) { enum_value = static_cast(intval.get_val().get_val()); } else { enum_value = UNKNOWN_VALUE; } } return 0; } void InterfacesToTraceItem_interface::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { INTEGER enc_val; boolean ext_bit = FALSE; switch (enum_value) { case iu__cs: enc_val = 0; ext_bit = FALSE; break; case iu__ps: enc_val = 1; ext_bit = FALSE; break; case iur: enc_val = 2; ext_bit = FALSE; break; case iub: enc_val = 3; ext_bit = FALSE; break; case uu: enc_val = 4; ext_bit = FALSE; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound or unknown value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } p_buf.PER_put_bit(ext_bit); if (ext_bit) enc_val.PER_encode_normally_small(p_buf, p_options); else INTEGER::PER_encode_int(p_buf, enc_val, 3); } void InterfacesToTraceItem_interface::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { INTEGER dec_val; boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) dec_val.PER_decode_normally_small(p_buf, p_options); else dec_val.PER_decode_unaligned_constrained(p_buf, 3, FALSE); int dec_int = dec_val; if (ext_bit) switch (dec_int) { default: enum_value = UNBOUND_VALUE; break; } else switch (dec_int) { case 0: enum_value = iu__cs; break; case 1: enum_value = iu__ps; break; case 2: enum_value = iur; break; case 3: enum_value = iub; break; case 4: enum_value = uu; break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid number (%d) for enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", dec_int); break; } } void InterfacesToTraceItem_interface_template::copy_template(const InterfacesToTraceItem_interface_template& other_value) { set_selection(other_value); switch (template_selection) { case SPECIFIC_VALUE: single_value = other_value.single_value; break; case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new InterfacesToTraceItem_interface_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new InterfacesToTraceItem_interface_template(*other_value.implication_.precondition); implication_.implied_template = new InterfacesToTraceItem_interface_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template() { } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(int other_value) : Base_Template(SPECIFIC_VALUE) { if (!InterfacesToTraceItem_interface::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface with unknown numeric value %d.", other_value); single_value = (InterfacesToTraceItem_interface::enum_type)other_value; } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(InterfacesToTraceItem_interface::enum_type other_value) : Base_Template(SPECIFIC_VALUE) { single_value = other_value; } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(const InterfacesToTraceItem_interface& other_value) : Base_Template(SPECIFIC_VALUE) { if (other_value.enum_value == InterfacesToTraceItem_interface::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); single_value = other_value.enum_value; } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (InterfacesToTraceItem_interface::enum_type)(const InterfacesToTraceItem_interface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface from an unbound optional field."); } } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(InterfacesToTraceItem_interface_template* p_precondition, InterfacesToTraceItem_interface_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } InterfacesToTraceItem_interface_template::InterfacesToTraceItem_interface_template(const InterfacesToTraceItem_interface_template& other_value) : Base_Template() { copy_template(other_value); } InterfacesToTraceItem_interface_template::~InterfacesToTraceItem_interface_template() { clean_up(); } boolean InterfacesToTraceItem_interface_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; return TRUE; } boolean InterfacesToTraceItem_interface_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value != InterfacesToTraceItem_interface::UNBOUND_VALUE; } void InterfacesToTraceItem_interface_template::clean_up() { switch (template_selection) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(int other_value) { if (!InterfacesToTraceItem_interface::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", other_value); clean_up(); set_selection(SPECIFIC_VALUE); single_value = (InterfacesToTraceItem_interface::enum_type)other_value; return *this; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(InterfacesToTraceItem_interface::enum_type other_value) { clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value; return *this; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(const InterfacesToTraceItem_interface& other_value) { if (other_value.enum_value == InterfacesToTraceItem_interface::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface to a template."); clean_up(); set_selection(SPECIFIC_VALUE); single_value = other_value.enum_value; return *this; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: set_selection(SPECIFIC_VALUE); single_value = (InterfacesToTraceItem_interface::enum_type)(const InterfacesToTraceItem_interface&)other_value; break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } return *this; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::operator=(const InterfacesToTraceItem_interface_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean InterfacesToTraceItem_interface_template::match(InterfacesToTraceItem_interface::enum_type other_value, boolean) const { switch (template_selection) { case SPECIFIC_VALUE: return single_value == other_value; case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } return FALSE; } boolean InterfacesToTraceItem_interface_template::match(const InterfacesToTraceItem_interface& other_value, boolean) const { if (other_value.enum_value == InterfacesToTraceItem_interface::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface with an unbound value."); return match(other_value.enum_value); } InterfacesToTraceItem_interface::enum_type InterfacesToTraceItem_interface_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return single_value; } void InterfacesToTraceItem_interface_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new InterfacesToTraceItem_interface_template[list_length]; break; default: TTCN_error("Setting an invalid type for a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_interface_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element in a non-list template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); return value_list.list_value[list_index]; } void InterfacesToTraceItem_interface_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_enum(InterfacesToTraceItem_interface::enum_to_str(single_value), single_value); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[elem_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void InterfacesToTraceItem_interface_template::log_match(const InterfacesToTraceItem_interface& match_value, boolean) const { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } void InterfacesToTraceItem_interface_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } } void InterfacesToTraceItem_interface_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = (InterfacesToTraceItem_interface::enum_type)text_buf.pull_int().get_val(); if (!InterfacesToTraceItem_interface::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface.", single_value); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new InterfacesToTraceItem_interface_template[value_list.n_values]; for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) value_list.list_value[elem_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @RANAP-IEs.InterfacesToTraceItem.interface."); } } boolean InterfacesToTraceItem_interface_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean InterfacesToTraceItem_interface_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iget_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { InterfacesToTraceItem_interface_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Enumerated: { InterfacesToTraceItem_interface::enum_type enum_val = InterfacesToTraceItem_interface::str_to_enum(m_p->get_enumerated(), m_p->get_enumerated_value()); if (!InterfacesToTraceItem_interface::is_valid_enum(enum_val)) { param.error("Invalid enumerated value for type @RANAP-IEs.InterfacesToTraceItem.interface."); } *this = enum_val; } break; case Module_Param::MP_Implication_Template: { InterfacesToTraceItem_interface_template* precondition = new InterfacesToTraceItem_interface_template; precondition->set_param(*m_p->get_elem(0)); InterfacesToTraceItem_interface_template* implied_template = new InterfacesToTraceItem_interface_template; implied_template->set_param(*m_p->get_elem(1)); *this = InterfacesToTraceItem_interface_template(precondition, implied_template); } break; default: param.type_error("enumerated template", "@RANAP-IEs.InterfacesToTraceItem.interface"); } is_ifpresent = param.get_ifpresent(); } void InterfacesToTraceItem_interface_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_VALUE: if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return; break; case TR_OMIT: if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return; break; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.InterfacesToTraceItem.interface"); } InterfacesToTraceItem::InterfacesToTraceItem() { } InterfacesToTraceItem::InterfacesToTraceItem(const InterfacesToTraceItem_interface& par_interface, const OPTIONAL< _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 >& par_iE__Extensions) : field_interface(par_interface), field_iE__Extensions(par_iE__Extensions) { } InterfacesToTraceItem::InterfacesToTraceItem(const InterfacesToTraceItem& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.InterfacesToTraceItem."); if (other_value.interface().is_bound()) field_interface = other_value.interface(); else field_interface.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } void InterfacesToTraceItem::clean_up() { field_interface.clean_up(); field_iE__Extensions.clean_up(); } const TTCN_Typedescriptor_t* InterfacesToTraceItem::get_descriptor() const { return &InterfacesToTraceItem_descr_; } InterfacesToTraceItem& InterfacesToTraceItem::operator=(const InterfacesToTraceItem& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-IEs.InterfacesToTraceItem."); if (other_value.interface().is_bound()) field_interface = other_value.interface(); else field_interface.clean_up(); if (other_value.iE__Extensions().is_bound()) field_iE__Extensions = other_value.iE__Extensions(); else field_iE__Extensions.clean_up(); } return *this; } boolean InterfacesToTraceItem::operator==(const InterfacesToTraceItem& other_value) const { return field_interface==other_value.field_interface && field_iE__Extensions==other_value.field_iE__Extensions; } boolean InterfacesToTraceItem::is_bound() const { return (field_interface.is_bound()) || (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_bound()); } boolean InterfacesToTraceItem::is_value() const { return field_interface.is_value() && (OPTIONAL_OMIT == field_iE__Extensions.get_selection() || field_iE__Extensions.is_value()); } int InterfacesToTraceItem::size_of() const { int ret_val = 1; if (field_iE__Extensions.ispresent()) ret_val++; return ret_val; } void InterfacesToTraceItem::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ interface := "); field_interface.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); } void InterfacesToTraceItem::set_implicit_omit() { if (interface().is_bound()) interface().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void InterfacesToTraceItem::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (20 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) interface().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "interface")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { interface().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.InterfacesToTraceItem: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-IEs.InterfacesToTraceItem"); } } void InterfacesToTraceItem::encode_text(Text_Buf& text_buf) const { field_interface.encode_text(text_buf); field_iE__Extensions.encode_text(text_buf); } void InterfacesToTraceItem::decode_text(Text_Buf& text_buf) { field_interface.decode_text(text_buf); field_iE__Extensions.decode_text(text_buf); } void InterfacesToTraceItem::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void InterfacesToTraceItem::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* InterfacesToTraceItem::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("interface': "); new_tlv->add_TLV(field_interface.BER_encode_TLV(InterfacesToTraceItem_interface_descr_, p_coding)); ec_1.set_msg("iE_Extensions': "); new_tlv->add_TLV(field_iE__Extensions.BER_encode_TLV(InterfacesToTraceItem_iE__Extensions_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean InterfacesToTraceItem::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.InterfacesToTraceItem' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("interface': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_interface.BER_decode_TLV(InterfacesToTraceItem_interface_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("iE_Extensions': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present) field_iE__Extensions=OMIT_VALUE; else { field_iE__Extensions.BER_decode_TLV(InterfacesToTraceItem_iE__Extensions_descr_, tmp_tlv, L_form); if(field_iE__Extensions.ispresent()) tlv_present=FALSE; } } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); return TRUE; } int InterfacesToTraceItem::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.InterfacesToTraceItem."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "interface"); enc_len += field_interface.JSON_encode(InterfacesToTraceItem_interface_descr_, p_tok, FALSE); } if (field_iE__Extensions.is_present()) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "iE_Extensions"); enc_len += field_iE__Extensions.JSON_encode(InterfacesToTraceItem_iE__Extensions_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int InterfacesToTraceItem::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean interface_found = FALSE; boolean iE__Extensions_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (9 == name_len && 0 == strncmp(fld_name, "interface", name_len)) { interface_found = TRUE; int ret_val = field_interface.JSON_decode(InterfacesToTraceItem_interface_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 9, "interface"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (13 == name_len && 0 == strncmp(fld_name, "iE_Extensions", name_len)) { iE__Extensions_found = TRUE; int ret_val = field_iE__Extensions.JSON_decode(InterfacesToTraceItem_iE__Extensions_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 13, "iE_Extensions"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!interface_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "interface"); return JSON_ERROR_FATAL; } if (!iE__Extensions_found) { field_iE__Extensions = OMIT_VALUE; } return (int)dec_len; } int InterfacesToTraceItem::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } char c = 0; if (field_iE__Extensions.is_present()) { c |= 64; } p_buf.put_c(c); field_interface.OER_encode(InterfacesToTraceItem_interface_descr_, p_buf); if (field_iE__Extensions.is_present()) field_iE__Extensions.OER_encode(InterfacesToTraceItem_iE__Extensions_descr_, p_buf); return 0; } int InterfacesToTraceItem::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const unsigned char* uc = p_buf.get_read_data(); p_buf.increase_pos(1); boolean has_extension = FALSE; if (uc[0] & 0x80) { has_extension = TRUE; } field_interface.OER_decode(InterfacesToTraceItem_interface_descr_, p_buf, p_oer); if (uc[0] & 64) field_iE__Extensions.OER_decode(InterfacesToTraceItem_iE__Extensions_descr_, p_buf, p_oer); else field_iE__Extensions = OMIT_VALUE; if (has_extension) { size_t bytes = decode_oer_length(p_buf, FALSE); uc = p_buf.get_read_data(); p_buf.increase_pos(bytes); uc++; } return 0; } void InterfacesToTraceItem::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } boolean ext_bit = FALSE; p_buf.PER_put_bit(ext_bit); boolean field_iE__Extensions_present = field_iE__Extensions.is_present(); p_buf.PER_put_bit(field_iE__Extensions_present); field_interface.PER_encode(InterfacesToTraceItem_interface_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_encode(InterfacesToTraceItem_iE__Extensions_descr_, p_buf, p_options); } void InterfacesToTraceItem::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); boolean field_iE__Extensions_present = p_buf.PER_get_bit(); field_interface.PER_decode(InterfacesToTraceItem_interface_descr_, p_buf, p_options); if (field_iE__Extensions_present) field_iE__Extensions.PER_decode(InterfacesToTraceItem_iE__Extensions_descr_, p_buf, p_options); else field_iE__Extensions = OMIT_VALUE; Vector ext_presences; if (ext_bit) { INTEGER length_; int normally_small_length = TRUE; int mul_16k; do { mul_16k = length_.PER_decode_length(p_buf, p_options, normally_small_length); if (mul_16k > 0) normally_small_length = FALSE; for (int i = 0; i < length_; ++i) { ext_presences.push_back(p_buf.PER_get_bit()); } } while (mul_16k > 0); } int nof_decoded_ext_adds = ext_presences.size(); for (int i = 0; i < nof_decoded_ext_adds; ++i) { if (ext_presences[i]) PER_skip_opentype(p_buf, p_options); } } struct InterfacesToTraceItem_template::single_value_struct { InterfacesToTraceItem_interface_template field_interface; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template field_iE__Extensions; }; void InterfacesToTraceItem_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_interface = ANY_VALUE; single_value->field_iE__Extensions = ANY_OR_OMIT; } } } void InterfacesToTraceItem_template::copy_value(const InterfacesToTraceItem& other_value) { single_value = new single_value_struct; if (other_value.interface().is_bound()) { single_value->field_interface = other_value.interface(); } else { single_value->field_interface.clean_up(); } if (other_value.iE__Extensions().is_bound()) { if (other_value.iE__Extensions().ispresent()) single_value->field_iE__Extensions = other_value.iE__Extensions()(); else single_value->field_iE__Extensions = OMIT_VALUE; } else { single_value->field_iE__Extensions.clean_up(); } set_selection(SPECIFIC_VALUE); } void InterfacesToTraceItem_template::copy_template(const InterfacesToTraceItem_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.interface().get_selection()) { single_value->field_interface = other_value.interface(); } else { single_value->field_interface.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.iE__Extensions().get_selection()) { single_value->field_iE__Extensions = other_value.iE__Extensions(); } else { single_value->field_iE__Extensions.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new InterfacesToTraceItem_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new InterfacesToTraceItem_template(*other_value.implication_.precondition); implication_.implied_template = new InterfacesToTraceItem_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.InterfacesToTraceItem."); break; } set_selection(other_value); } InterfacesToTraceItem_template::InterfacesToTraceItem_template() { } InterfacesToTraceItem_template::InterfacesToTraceItem_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } InterfacesToTraceItem_template::InterfacesToTraceItem_template(const InterfacesToTraceItem& other_value) { copy_value(other_value); } InterfacesToTraceItem_template::InterfacesToTraceItem_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const InterfacesToTraceItem&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.InterfacesToTraceItem from an unbound optional field."); } } InterfacesToTraceItem_template::InterfacesToTraceItem_template(InterfacesToTraceItem_template* p_precondition, InterfacesToTraceItem_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } InterfacesToTraceItem_template::InterfacesToTraceItem_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } InterfacesToTraceItem_template::InterfacesToTraceItem_template(const InterfacesToTraceItem_template& other_value) : Base_Template() { copy_template(other_value); } InterfacesToTraceItem_template::~InterfacesToTraceItem_template() { clean_up(); } InterfacesToTraceItem_template& InterfacesToTraceItem_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } InterfacesToTraceItem_template& InterfacesToTraceItem_template::operator=(const InterfacesToTraceItem& other_value) { clean_up(); copy_value(other_value); return *this; } InterfacesToTraceItem_template& InterfacesToTraceItem_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const InterfacesToTraceItem&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.InterfacesToTraceItem."); } return *this; } InterfacesToTraceItem_template& InterfacesToTraceItem_template::operator=(const InterfacesToTraceItem_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean InterfacesToTraceItem_template::match(const InterfacesToTraceItem& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.interface().is_bound()) return FALSE; if(!single_value->field_interface.match(other_value.interface(), legacy))return FALSE; if(!other_value.iE__Extensions().is_bound()) return FALSE; if((other_value.iE__Extensions().ispresent() ? !single_value->field_iE__Extensions.match((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17&)other_value.iE__Extensions(), legacy) : !single_value->field_iE__Extensions.match_omit(legacy)))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-IEs.InterfacesToTraceItem."); } return FALSE; } boolean InterfacesToTraceItem_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_interface.is_bound() || (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_bound()); } boolean InterfacesToTraceItem_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_interface.is_value() && (single_value->field_iE__Extensions.is_omit() || single_value->field_iE__Extensions.is_value()); } void InterfacesToTraceItem_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } InterfacesToTraceItem InterfacesToTraceItem_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.InterfacesToTraceItem."); InterfacesToTraceItem ret_val; if (single_value->field_interface.is_bound()) { ret_val.interface() = single_value->field_interface.valueof(); } if (single_value->field_iE__Extensions.is_omit()) ret_val.iE__Extensions() = OMIT_VALUE; else if (single_value->field_iE__Extensions.is_bound()) { ret_val.iE__Extensions() = single_value->field_iE__Extensions.valueof(); } return ret_val; } void InterfacesToTraceItem_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-IEs.InterfacesToTraceItem."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new InterfacesToTraceItem_template[list_length]; } InterfacesToTraceItem_template& InterfacesToTraceItem_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-IEs.InterfacesToTraceItem."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-IEs.InterfacesToTraceItem."); return value_list.list_value[list_index]; } InterfacesToTraceItem_interface_template& InterfacesToTraceItem_template::interface() { set_specific(); return single_value->field_interface; } const InterfacesToTraceItem_interface_template& InterfacesToTraceItem_template::interface() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field interface of a non-specific template of type @RANAP-IEs.InterfacesToTraceItem."); return single_value->field_interface; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& InterfacesToTraceItem_template::iE__Extensions() { set_specific(); return single_value->field_iE__Extensions; } const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& InterfacesToTraceItem_template::iE__Extensions() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field iE_Extensions of a non-specific template of type @RANAP-IEs.InterfacesToTraceItem."); return single_value->field_iE__Extensions; } int InterfacesToTraceItem_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: { int ret_val = 1; if (single_value->field_iE__Extensions.is_present()) ret_val++; return ret_val; } case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-IEs.InterfacesToTraceItem containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-IEs.InterfacesToTraceItem."); } return 0; } void InterfacesToTraceItem_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ interface := "); single_value->field_interface.log(); TTCN_Logger::log_event_str(", iE_Extensions := "); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void InterfacesToTraceItem_template::log_match(const InterfacesToTraceItem& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_interface.match(match_value.interface(), legacy)){ TTCN_Logger::log_logmatch_info(".interface"); single_value->field_interface.log_match(match_value.interface(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if (match_value.iE__Extensions().ispresent()){ if(!single_value->field_iE__Extensions.match(match_value.iE__Extensions(), legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions"); single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } else { if (!single_value->field_iE__Extensions.match_omit(legacy)){ TTCN_Logger::log_logmatch_info(".iE_Extensions := omit with "); TTCN_Logger::print_logmatch_buffer(); single_value->field_iE__Extensions.log(); TTCN_Logger::log_event_str(" unmatched"); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ interface := "); single_value->field_interface.log_match(match_value.interface(), legacy); TTCN_Logger::log_event_str(", iE_Extensions := "); if (match_value.iE__Extensions().ispresent()) { single_value->field_iE__Extensions.log_match(match_value.iE__Extensions(), legacy); } else { TTCN_Logger::log_event_str("omit with "); single_value->field_iE__Extensions.log(); if (single_value->field_iE__Extensions.match_omit(legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void InterfacesToTraceItem_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (interface().is_bound()) interface().set_implicit_omit(); if (!iE__Extensions().is_bound()) iE__Extensions() = OMIT_VALUE; else iE__Extensions().set_implicit_omit(); } void InterfacesToTraceItem_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_interface.encode_text(text_buf); single_value->field_iE__Extensions.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.InterfacesToTraceItem."); } } void InterfacesToTraceItem_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_interface.decode_text(text_buf); single_value->field_iE__Extensions.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new InterfacesToTraceItem_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-IEs.InterfacesToTraceItem."); } } void InterfacesToTraceItem_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { InterfacesToTraceItem_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) interface().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) iE__Extensions().set_param(*param.get_elem(1)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "interface")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { interface().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "iE_Extensions")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { iE__Extensions().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-IEs.InterfacesToTraceItem: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { InterfacesToTraceItem_template* precondition = new InterfacesToTraceItem_template; precondition->set_param(*param.get_elem(0)); InterfacesToTraceItem_template* implied_template = new InterfacesToTraceItem_template; implied_template->set_param(*param.get_elem(1)); *this = InterfacesToTraceItem_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-IEs.InterfacesToTraceItem"); } is_ifpresent = param.get_ifpresent(); } void InterfacesToTraceItem_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_interface.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.InterfacesToTraceItem"); single_value->field_iE__Extensions.check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.InterfacesToTraceItem"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.InterfacesToTraceItem"); } boolean InterfacesToTraceItem_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean InterfacesToTraceItem_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst17"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst17_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst17"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst17_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) { if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18() { clean_up(); if (val_ptr != NULL) val_ptr = NULL; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::clean_up() { if (val_ptr != NULL) { if (val_ptr->ref_count > 1) { val_ptr->ref_count--; val_ptr = NULL; } else if (val_ptr->ref_count == 1) { for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL) delete val_ptr->value_elements[elem_count]; free_pointers((void**)val_ptr->value_elements); delete val_ptr; val_ptr = NULL; } else TTCN_error("Internal error: Invalid reference counter in a record of/set of value."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator=(null_type) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) { if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (this != &other_value) { clean_up(); val_ptr = other_value.val_ptr; val_ptr->ref_count++; } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator==(null_type) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return val_ptr->n_elements == 0 ; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator==(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) const { if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (val_ptr == other_value.val_ptr) return TRUE; if (val_ptr->n_elements != (other_value.val_ptr)->n_elements) return FALSE; for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ if ((other_value.val_ptr)->value_elements[elem_count] != NULL){ if (*val_ptr->value_elements[elem_count] != *(other_value.val_ptr)->value_elements[elem_count]) return FALSE; } else return FALSE; } else { if ((other_value.val_ptr)->value_elements[elem_count] != NULL) return FALSE; } } return TRUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 using a negative index: %d.", index_value); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (index_value >= val_ptr->n_elements) ? index_value + 1 : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++){ if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (index_value >= val_ptr->n_elements) set_size(index_value + 1); if (val_ptr->value_elements[index_value] == NULL) { val_ptr->value_elements[index_value] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18; } return *val_ptr->value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator[](int index_value) const { if (val_ptr == NULL) TTCN_error("Accessing an element in an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (index_value < 0) TTCN_error("Accessing an element of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 using a negative index: %d.", index_value); if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18: The index is %d, but the value has only %d elements.", index_value, val_ptr->n_elements); return (val_ptr->value_elements[index_value] == NULL) ? UNBOUND_ELEM : *val_ptr->value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return (*this)[(int)index_value]; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator<<=(int rotate_count) const { return *this >>= (-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator<<=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate left operator."); return *this >>= (int)(-rotate_count); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator>>=(const INTEGER& rotate_count) const { rotate_count.must_bound("Unbound integer operand of rotate right operator."); return *this >>= (int)rotate_count; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator>>=(int rotate_count) const { if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (val_ptr->n_elements == 0) return *this; int rc; if (rotate_count>=0) rc = rotate_count % val_ptr->n_elements; else rc = val_ptr->n_elements - ((-rotate_count) % val_ptr->n_elements); if (rc == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 ret_val; ret_val.set_size(val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::operator+(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) const { if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 concatenation."); if (val_ptr->n_elements == 0) return other_value; if (other_value.val_ptr->n_elements == 0) return *this; _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 ret_val; ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); for (int i=0; in_elements; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*val_ptr->value_elements[i]); } } for (int i=0; in_elements; i++) { if (other_value.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*other_value.val_ptr->value_elements[i]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::substr(int index, int returncount) const { if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); check_substr_arguments(val_ptr->n_elements, index, returncount, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 ret_val; ret_val.set_size(returncount); for (int i=0; ivalue_elements[i+index] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*val_ptr->value_elements[i+index]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& repl) const { if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); check_replace_arguments(val_ptr->n_elements, index, len, "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18","element"); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 ret_val; ret_val.set_size(val_ptr->n_elements + repl.val_ptr->n_elements - len); for (int i = 0; i < index; i++) { if (val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*val_ptr->value_elements[i]); } } for (int i = 0; i < repl.val_ptr->n_elements; i++) { if (repl.val_ptr->value_elements[i] != NULL) { ret_val.val_ptr->value_elements[i+index] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*repl.val_ptr->value_elements[i]); } } for (int i = 0; i < val_ptr->n_elements - index - len; i++) { if (val_ptr->value_elements[index+i+len] != NULL) { ret_val.val_ptr->value_elements[index+i+repl.val_ptr->n_elements] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*val_ptr->value_elements[index+i+len]); } } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& repl) const { if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return replace(index, len, repl.valueof()); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (val_ptr == NULL) { val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; } else if (val_ptr->ref_count > 1) { struct recordof_setof_struct *new_val_ptr = new recordof_setof_struct; new_val_ptr->ref_count = 1; new_val_ptr->n_elements = (new_size < val_ptr->n_elements) ? new_size : val_ptr->n_elements; new_val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)allocate_pointers(new_val_ptr->n_elements); for (int elem_count = 0; elem_count < new_val_ptr->n_elements; elem_count++) { if (val_ptr->value_elements[elem_count] != NULL){ new_val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(*(val_ptr->value_elements[elem_count])); } } clean_up(); val_ptr = new_val_ptr; } if (new_size > val_ptr->n_elements) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); #ifdef TITAN_MEMORY_DEBUG_SET_RECORD_OF if((val_ptr->n_elements/1000)!=(new_size/1000)) TTCN_warning("New size of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18: %d",new_size); #endif val_ptr->n_elements = new_size; } else if (new_size < val_ptr->n_elements) { for (int elem_count = new_size; elem_count < val_ptr->n_elements; elem_count++) if (val_ptr->value_elements[elem_count] != NULL)delete val_ptr->value_elements[elem_count]; val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); val_ptr->n_elements = new_size; } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::is_value() const { if (val_ptr == NULL) return FALSE; for(int i = 0; i < val_ptr->n_elements; ++i) { if (val_ptr->value_elements[i] == NULL || !val_ptr->value_elements[i]->is_value()) return FALSE; } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::size_of() const { if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return val_ptr->n_elements; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::lengthof() const { if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); for (int my_length=val_ptr->n_elements; my_length>0; my_length--) if (val_ptr->value_elements[my_length-1] != NULL) return my_length; return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::log() const { if (val_ptr == NULL) {; TTCN_Logger::log_event_unbound(); return; } switch (val_ptr->n_elements) { case 0: TTCN_Logger::log_event_str("{ }"); break; default: TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); (*this)[elem_count].log(); } TTCN_Logger::log_event_str(" }"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::set_implicit_omit() { if (val_ptr == NULL) return; for (int i = 0; i < val_ptr->n_elements; i++) { if (val_ptr->value_elements[i] != NULL) val_ptr->value_elements[i]->set_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "record of value"); switch (param.get_operation_type()) { case Module_Param::OT_ASSIGN: if (param.get_type()==Module_Param::MP_Value_List && param.get_size()==0) { *this = NULL_VALUE; return; } switch (param.get_type()) { case Module_Param::MP_Value_List: set_size(param.get_size()); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed) { (*this)[i].set_param(*curr); if (!(*this)[i].is_bound()) { delete val_ptr->value_elements[i]; val_ptr->value_elements[i] = NULL; } } } break; case Module_Param::MP_Indexed_List: for (size_t i=0; iget_id()->get_index()].set_param(*curr); if (!(*this)[curr->get_id()->get_index()].is_bound()) { delete val_ptr->value_elements[curr->get_id()->get_index()]; val_ptr->value_elements[curr->get_id()->get_index()] = NULL; } } break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); } break; case Module_Param::OT_CONCAT: switch (param.get_type()) { case Module_Param::MP_Value_List: { if (!is_bound()) *this = NULL_VALUE; int start_idx = lengthof(); for (size_t i=0; iget_type()!=Module_Param::MP_NotUsed)) { (*this)[start_idx+(int)i].set_param(*curr); } } } break; case Module_Param::MP_Indexed_List: param.error("Cannot concatenate an indexed value list"); break; default: param.type_error("record of value", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); } break; default: TTCN_error("Internal error: Unknown operation type."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::encode_text(Text_Buf& text_buf) const { if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); text_buf.push_int(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) (*this)[elem_count].encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::decode_text(Text_Buf& text_buf) { clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = text_buf.pull_int().get_val(); if (val_ptr->n_elements < 0) TTCN_error("Text decoder: Negative size was received for a value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)allocate_pointers(val_ptr->n_elements); for (int elem_count = 0; elem_count < val_ptr->n_elements; elem_count++) { val_ptr->value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18; val_ptr->value_elements[elem_count]->decode_text(text_buf); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=BER_encode_chk_bound(is_bound()); if(!new_tlv) { new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec; for(int elem_i=0; elem_in_elements; elem_i++) { ec.set_msg("Component #%d: ", elem_i); new_tlv->add_TLV((*this)[elem_i].BER_encode_TLV(*p_td.oftype_descr, p_coding)); } } new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '%s' type: ", p_td.name); stripped_tlv.chk_constructed_flag(TRUE); clean_up(); val_ptr = new recordof_setof_struct; val_ptr->ref_count = 1; val_ptr->n_elements = 0; val_ptr->value_elements = NULL; size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; TTCN_EncDec_ErrorContext ec_1("Component #"); TTCN_EncDec_ErrorContext ec_2("0: "); while(BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv)) { val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, val_ptr->n_elements + 1); val_ptr->n_elements++; val_ptr->value_elements[val_ptr->n_elements - 1] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18; val_ptr->value_elements[val_ptr->n_elements - 1]->BER_decode_TLV(*p_td.oftype_descr, tmp_tlv, L_form); ec_2.set_msg("%d: ", val_ptr->n_elements); } return TRUE; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return -1; } int enc_len = p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_START : JSON_TOKEN_ARRAY_START, NULL); for (int i = 0; i < val_ptr->n_elements; ++i) { if (p_td.json->metainfo_unbound && !(*this)[i].is_bound()) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "metainfo []"); enc_len += p_tok.put_next_token(JSON_TOKEN_STRING, "\"unbound\""); enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } else { int ret_val = (*this)[i].JSON_encode(*p_td.oftype_descr, p_tok, p_td.json->as_map); if (0 > ret_val) break; enc_len += ret_val; } } enc_len += p_tok.put_next_token(p_td.json->as_map ? JSON_TOKEN_OBJECT_END : JSON_TOKEN_ARRAY_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } if (p_td.json->default_value.type == JD_LEGACY && 0 == p_tok.get_buffer_length()) { set_size(0); return strlen(p_td.json->default_value.str); } json_token_t token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_ERROR == token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_START != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_START != token)) { return JSON_ERROR_INVALID_TOKEN; } set_size(0); for (int nof_elements = 0; TRUE; ++nof_elements) { size_t buf_pos = p_tok.get_buf_pos(); size_t ret_val; if (p_td.json->metainfo_unbound) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_START == token) { char* value = NULL; size_t value_len = 0; ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_NAME == token && 11 == value_len && 0 == strncmp(value, "metainfo []", 11)) { ret_val += p_tok.get_next_token(&token, &value, &value_len); if (JSON_TOKEN_STRING == token && 9 == value_len && 0 == strncmp(value, "\"unbound\"", 9)) { ret_val = p_tok.get_next_token(&token, NULL, NULL); if (JSON_TOKEN_OBJECT_END == token) { dec_len += ret_val; continue; } } } } p_tok.set_buf_pos(buf_pos); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18* val = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18; int ret_val2 = val->JSON_decode(*p_td.oftype_descr, p_tok, p_silent, p_td.json->as_map); if (JSON_ERROR_INVALID_TOKEN == ret_val2) { p_tok.set_buf_pos(buf_pos); delete val; break; } else if (JSON_ERROR_FATAL == ret_val2) { delete val; if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } val_ptr->value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18**)reallocate_pointers( (void**)val_ptr->value_elements, val_ptr->n_elements, nof_elements + 1); val_ptr->value_elements[nof_elements] = val; val_ptr->n_elements = nof_elements + 1; dec_len += (size_t)ret_val2; } dec_len += p_tok.get_next_token(&token, NULL, NULL); if ((!p_td.json->as_map && JSON_TOKEN_ARRAY_END != token) || (p_td.json->as_map && JSON_TOKEN_OBJECT_END != token)) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_REC_OF_END_TOKEN_ERROR, ""); if (p_silent) { clean_up(); } return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::OER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return -1; } encode_oer_length(val_ptr->n_elements, p_buf, TRUE); for (int i = 0; i < val_ptr->n_elements; ++i) { (*this)[i].OER_encode(*p_td.oftype_descr, p_buf); } return 0; } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::OER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t nof_elem = decode_oer_length(p_buf, TRUE); set_size(nof_elem); for (size_t i = 0; i < nof_elem; i++) { (*this)[i].OER_decode(*p_td.oftype_descr, p_buf, p_oer); } return 0; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE OF value."); return; } const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } INTEGER length(val_ptr->n_elements); boolean extendable = cons->has_extension_marker(); boolean within_ext_root = cons->is_within_extension_root(length); if (!within_ext_root && !extendable) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Encoding an invalid SEQUENCE OF value (does not match PER-visible constraints)."); return; } boolean ext_bit = extendable && !within_ext_root; if (extendable) p_buf.PER_put_bit(ext_bit); INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); if (range == 1 && length == 0) return; int mul_16k; int pos = 0; do { mul_16k = (range == 1) ? 0 : length.PER_encode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); int elements_encoded = (mul_16k == 0) ? (int)length : mul_16k * PER_16K; for (int i = 0; i < elements_encoded; ++i) { (*this)[i + pos].PER_encode(*p_td.oftype_descr, p_buf, p_options); } if (mul_16k > 0) { pos += elements_encoded; length = length - elements_encoded; range = 0; } } while (mul_16k > 0); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { const Per_Integer_Constraint* cons = dynamic_cast(p_td.per->c); if (cons == NULL) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INTERNAL, "Internal error: Invalid constraint in PER descriptor."); return; } clean_up(); boolean extendable = cons->has_extension_marker(); boolean ext_bit = extendable ? p_buf.PER_get_bit() : FALSE; INTEGER length_ub = cons->has_upper_bound() ? cons->get_upper_bound() : INTEGER(-1); if (length_ub >= PER_64K) length_ub = -1; INTEGER range = (ext_bit || length_ub < 0) ? INTEGER(0) : cons->get_nof_values(); int mul_16k; INTEGER length; int current_size = 0; do { mul_16k = length.PER_decode_length(p_buf, p_options, range, cons->get_lower_bound(), length_ub); if (mul_16k != 0) range = 0; int new_size = current_size + (int)length; set_size(new_size); for (int i = current_size; i < new_size; ++i) { (*this)[i].PER_decode(*p_td.oftype_descr, p_buf, p_options); } current_size = new_size; } while (mul_16k > 0); if (!ext_bit && !cons->is_within_extension_root(val_ptr->n_elements)) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_CONSTRAINT, "Decoded SEQUENCE OF value does not match PER-visible constraints."); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) { if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 with an unbound value."); single_value.n_elements = other_value.size_of(); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (other_value[elem_count].is_bound()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(other_value[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; } } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.n_elements = other_value.single_value.n_elements; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (UNINITIALIZED_TEMPLATE != other_value.single_value.value_elements[elem_count]->get_selection()) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(*other_value.single_value.value_elements[elem_count]); } else { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; } } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); break; } set_selection(other_value); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy) { if (value_index >= 0) return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18*)value_ptr)[value_index], legacy); else return ((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template() { } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(template_sel other_value) : Base_Record_Of_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(null_type) : Base_Record_Of_Template(SPECIFIC_VALUE) { single_value.n_elements = 0; single_value.value_elements = NULL; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template* p_implied_template) : Base_Record_Of_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18>* p_dyn_match) : Base_Record_Of_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& other_value) : Base_Record_Of_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::~_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; free_pointers((void**)single_value.value_elements); break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator=(null_type) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); } return *this; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator=(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator[](int index_value) { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 using a negative index: %d.", index_value); switch (template_selection) { case SPECIFIC_VALUE: if(index_value < single_value.n_elements) break; // no break case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: case UNINITIALIZED_TEMPLATE: set_size(index_value + 1); break; default: TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); break; } return *single_value.value_elements[index_value]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator[](const INTEGER& index_value) { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return (*this)[(int)index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator[](int index_value) const { if (index_value < 0) TTCN_error("Accessing an element of a template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 using a negative index: %d.", index_value); if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18: The index is %d, but the template has only %d elements.", index_value, single_value.n_elements); return *single_value.value_elements[index_value]; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::operator[](const INTEGER& index_value) const { index_value.must_bound("Using an unbound integer value for indexing a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return (*this)[(int)index_value]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::set_size(int new_size) { if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); template_sel old_selection = template_selection; if (old_selection != SPECIFIC_VALUE) { clean_up(); set_selection(SPECIFIC_VALUE); single_value.n_elements = 0; single_value.value_elements = NULL; } if (new_size > single_value.n_elements) { single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(ANY_VALUE); } else { for (int elem_count = single_value.n_elements; elem_count < new_size; elem_count++) single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; } single_value.n_elements = new_size; } else if (new_size < single_value.n_elements) { for (int elem_count = new_size; elem_count < single_value.n_elements; elem_count++) delete single_value.value_elements[elem_count]; single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); single_value.n_elements = new_size; } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::n_elem() const { switch (template_selection) { case SPECIFIC_VALUE: return single_value.n_elements; break; case VALUE_LIST: return value_list.n_values; break; default: TTCN_error("Performing n_elem"); } } int _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::size_of(boolean is_size) const { const char* op_name = is_size ? "size" : "length"; int min_size; boolean has_any_or_none; if (is_ifpresent) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 which has an ifpresent attribute.", op_name); switch (template_selection) { case SPECIFIC_VALUE: { min_size = 0; has_any_or_none = FALSE; int elem_count = single_value.n_elements; if (!is_size) { while (elem_count>0 && !single_value.value_elements[elem_count-1]->is_bound()) elem_count--; } for (int i=0; iget_selection()) { case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 containing omit element.", op_name); case ANY_OR_OMIT: has_any_or_none = TRUE; break; default: min_size++; break; } } } break; case OMIT_VALUE: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 containing omit value.", op_name); case ANY_VALUE: case ANY_OR_OMIT: min_size = 0; has_any_or_none = TRUE; break; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 containing an empty list.", op_name); int item_size = value_list.list_value[0].size_of(is_size); for (unsigned int i = 1; i < value_list.n_values; i++) { if (value_list.list_value[i].size_of(is_size)!=item_size) TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 containing a value list with different sizes.", op_name); } min_size = item_size; has_any_or_none = FALSE; break; } case COMPLEMENTED_LIST: TTCN_error("Performing %sof() operation on a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18 containing complemented list.", op_name); default: TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18.", op_name); } return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; int value_length = other_value.size_of(); if (!match_length(value_length)) return FALSE; switch (template_selection) { case SPECIFIC_VALUE: return match_record_of(&other_value, value_length, this, single_value.n_elements, match_function_specific, legacy); case OMIT_VALUE: return FALSE; case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching with an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (!single_value.value_elements[elem_count]->is_value()) return FALSE; return TRUE; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 ret_val; ret_val.set_size(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) if (single_value.value_elements[elem_count]->is_bound()) { ret_val[elem_count] = single_value.value_elements[elem_count]->valueof(); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::substr(int index, int returncount) const { if (!is_value()) TTCN_error("The first argument of function substr() is a template with non-specific value."); return valueof().substr(index, returncount); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); if (!repl.is_value()) TTCN_error("The fourth argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl.valueof()); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::replace(int index, int len, const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& repl) const { if (!is_value()) TTCN_error("The first argument of function replace() is a template with non-specific value."); return valueof().replace(index, len, repl); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::set_type(template_sel template_type, unsigned int list_length) { clean_up(); switch (template_type) { case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template[list_length]; break; default: TTCN_error("Internal error: Setting an invalid type for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); } set_selection(template_type); } _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::list_item(unsigned int list_index) { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: if (single_value.n_elements > 0) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); if (permutation_starts_at(elem_count)) TTCN_Logger::log_event_str("permutation("); single_value.value_elements[elem_count]->log(); if (permutation_ends_at(elem_count)) TTCN_Logger::log_char(')'); } TTCN_Logger::log_event_str(" }"); } else TTCN_Logger::log_event_str("{ }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_restricted(); log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::log_match(const _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); }else{ if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if(!single_value.value_elements[elem_count]->match(match_value[elem_count], legacy)){ TTCN_Logger::log_logmatch_info("[%d]", elem_count); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } } log_match_length(single_value.n_elements); } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE && single_value.n_elements > 0 && get_number_of_permutations() == 0 && single_value.n_elements == match_value.size_of()) { TTCN_Logger::log_event_str("{ "); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { if (elem_count > 0) TTCN_Logger::log_event_str(", "); single_value.value_elements[elem_count]->log_match(match_value[elem_count], legacy); } TTCN_Logger::log_event_str(" }"); log_match_length(single_value.n_elements); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::encode_text(Text_Buf& text_buf) const { encode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) single_value.value_elements[elem_count]->encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_permutation(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value.n_elements = text_buf.pull_int().get_val(); if (single_value.n_elements < 0) TTCN_error("Text decoder: Negative size was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); single_value.value_elements = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template**)allocate_pointers(single_value.n_elements); for (int elem_count = 0; elem_count < single_value.n_elements; elem_count++) { single_value.value_elements[elem_count] = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; single_value.value_elements[elem_count]->decode_text(text_buf); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18."); } } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int i=0; iset_implicit_omit(); } } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "record of template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template temp; temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_iget_id()->get_index())].set_param(*param.get_elem(p_i)); } break; case Module_Param::MP_Value_List: { set_size(param.get_size()); int curr_idx = 0; for (size_t p_i=0; p_iget_type()) { case Module_Param::MP_NotUsed: curr_idx++; break; case Module_Param::MP_Permutation_Template: { int perm_start_idx = curr_idx; Module_Param* param_i = param.get_elem(p_i); for (size_t perm_i=0; perm_iget_size(); perm_i++) { (*this)[curr_idx].set_param(*(param_i->get_elem(perm_i))); curr_idx++; } int perm_end_idx = curr_idx - 1; add_permutation(perm_start_idx, perm_end_idx); } break; default: (*this)[curr_idx].set_param(*param.get_elem(p_i)); curr_idx++; } } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template* precondition = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template(precondition, implied_template); } break; default: param.type_error("record of template", "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); } is_ifpresent = param.get_ifpresent(); set_length_range(param); } void _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; for (int i=0; icheck_restriction(t_res, t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.ProtocolExtensionContainer.RANAP-IEs.inst18"); } boolean _root_RANAP__Containers_ProtocolExtensionContainer_RANAP__IEs_inst18_template::get_istemplate_kind(const char* type) const { if (!strcmp(type, "AnyElement")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_VALUE) { return TRUE; } } return FALSE; } else if (!strcmp(type, "AnyElementsOrNone")) { if (template_selection != SPECIFIC_VALUE) { return FALSE; } for (int i = 0; i < single_value.n_elements; i++) { if (single_value.value_elements[i]->get_selection() == ANY_OR_OMIT) { return TRUE; } } return FALSE; } else if (!strcmp(type, "permutation")) { return number_of_permutations; } else if (!strcmp(type, "length")) { return length_restriction_type != NO_LENGTH_RESTRICTION; } else { return Base_Template::get_istemplate_kind(type); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) { switch (other_value.union_selection) { default: TTCN_error("Assignment of an unbound union value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } union_selection = other_value.union_selection; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type() { union_selection = UNBOUND_VALUE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) : Base_Type(){ copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) { if (this != &other_value) { clean_up(); copy_value(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) const { if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); if (union_selection != other_value.union_selection) return FALSE; switch (union_selection) { default: return FALSE; } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::ischosen(union_selection_type checked_selection) const { if (checked_selection == UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); return union_selection == checked_selection; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::is_bound() const { return union_selection != UNBOUND_VALUE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::is_value() const { switch (union_selection) { case UNBOUND_VALUE: return FALSE; default: TTCN_error("Invalid selection in union is_bound");} } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::clean_up() { switch (union_selection) { default: break; } union_selection = UNBOUND_VALUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::log() const { switch (union_selection) { default: TTCN_Logger::log_event_unbound(); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type.", last_name); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::set_implicit_omit() { switch (union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); union_selection = UNBOUND_VALUE; return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type' type: "); if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tlv_opentype)) { tlv_opentype.Tlen = 0; return FALSE; } clean_up(); union_selection = UNBOUND_VALUE; return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean) const { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Cannot encode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type, because it has zero alternatives."); return -1; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, "Cannot decode union of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type, because it has zero alternatives."); return JSON_ERROR_FATAL; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); return -1; } return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { size_t pos = decode_oer_length(p_buf, FALSE); size_t prev_pos = p_buf.get_pos(); p_buf.increase_pos(pos); p_oer.opentype_poses.push_back(prev_pos); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { if (union_selection != UNBOUND_VALUE) return; TTCN_EncDec_ErrorContext ec_0("While decoding open type '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type': "); ec_0.error(TTCN_EncDec::ET_DEC_OPENTYPE, "Cannot decode open type: the constraining object set is empty."); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { default: TTCN_error("Initializing a template with an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& other_value) : Base_Template(){ copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template() { clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::union_selection_type value_selection = other_value.get_selection(); if (value_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type ret_val; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } return ret_val; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); return value_list.list_value[list_index]; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template[list_length]; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::ischosen(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::union_selection_type checked_selection) const { if (checked_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { switch (single_value.union_selection) { default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { default: break; } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::UNBOUND_VALUE; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::union_selection_type new_selection = (_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type'"); } param.error("Field `%s' not found in union template type `@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); mp_last->error("Field %s does not exist in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type.", last_name); } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template; precondition->set_param(*m_p->get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template; implied_template->set_param(*m_p->get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18.extensionValue.type"); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(const INTEGER& par_id, const RANAP__CommonDataTypes::Criticality& par_criticality, const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type& par_extensionValue) : field_id(par_id), field_criticality(par_criticality), field_extensionValue(par_extensionValue) { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) { if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::clean_up() { field_id.clean_up(); field_criticality.clean_up(); field_extensionValue.clean_up(); } const TTCN_Typedescriptor_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::get_descriptor() const { return &_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_descr_; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) { if (this != &other_value) { if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); if (other_value.id().is_bound()) field_id = other_value.id(); else field_id.clean_up(); if (other_value.criticality().is_bound()) field_criticality = other_value.criticality(); else field_criticality.clean_up(); if (other_value.extensionValue().is_bound()) field_extensionValue = other_value.extensionValue(); else field_extensionValue.clean_up(); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::operator==(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) const { return field_id==other_value.field_id && field_criticality==other_value.field_criticality && field_extensionValue==other_value.field_extensionValue; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::is_bound() const { return (field_id.is_bound()) || (field_criticality.is_bound()) || (field_extensionValue.is_bound()); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::is_value() const { return field_id.is_value() && field_criticality.is_value() && field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::log() const { if (!is_bound()) { TTCN_Logger::log_event_unbound(); return; } TTCN_Logger::log_event_str("{ id := "); field_id.log(); TTCN_Logger::log_event_str(", criticality := "); field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::set_implicit_omit() { if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "record value"); switch (param.get_type()) { case Module_Param::MP_Value_List: if (30 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18: %s", curr_param->get_id()->get_name()); break; } } break; default: param.type_error("record value", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::encode_text(Text_Buf& text_buf) const { field_id.encode_text(text_buf); field_criticality.encode_text(text_buf); field_extensionValue.encode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::decode_text(Text_Buf& text_buf) { field_id.decode_text(text_buf); field_criticality.decode_text(text_buf); field_extensionValue.decode_text(text_buf); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(FALSE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t* _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv=ASN_BER_TLV_t::construct(NULL); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); new_tlv->add_TLV(field_id.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_coding)); ec_1.set_msg("criticality': "); new_tlv->add_TLV(field_criticality.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_coding)); ec_1.set_msg("extensionValue': "); new_tlv->add_TLV(field_extensionValue.BER_encode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_coding)); new_tlv=ASN_BER_V2TLV(new_tlv, p_td, p_coding); return new_tlv; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18' type: "); stripped_tlv.chk_constructed_flag(TRUE); size_t V_pos=0; ASN_BER_TLV_t tmp_tlv; boolean tlv_present=FALSE; { TTCN_EncDec_ErrorContext ec_1("Component '"); TTCN_EncDec_ErrorContext ec_2; ec_2.set_msg("id': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_id.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("criticality': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_criticality.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, tmp_tlv, L_form); tlv_present=FALSE; ec_2.set_msg("extensionValue': "); if(!tlv_present) tlv_present=BER_decode_constdTLV_next(stripped_tlv, V_pos, L_form, tmp_tlv); if(!tlv_present){ ec_2.error(TTCN_EncDec::ET_INCOMPL_MSG,"Invalid or incomplete message was received."); return FALSE; } field_extensionValue.BER_decode_TLV(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, tmp_tlv, L_form); tlv_present=FALSE; } BER_decode_constdTLV_end(stripped_tlv, V_pos, L_form, tmp_tlv, tlv_present); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; BER_decode_opentypes(p_typelist, L_form); return TRUE; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::BER_decode_opentypes(TTCN_Type_list& p_typelist, unsigned L_form) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("criticality': "); field_criticality.BER_decode_opentypes(p_typelist, L_form); ec_1.set_msg("extensionValue': "); field_extensionValue.BER_decode_opentypes(p_typelist, L_form); p_typelist.pop(); } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::JSON_encode(const TTCN_Typedescriptor_t&, JSON_Tokenizer& p_tok, boolean p_parent_is_map) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); return -1; } int enc_len = p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "id"); enc_len += field_id.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "criticality"); enc_len += field_criticality.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_tok, FALSE); } { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "extensionValue"); enc_len += field_extensionValue.JSON_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_tok, FALSE); } enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); return enc_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean p_parent_is_map, int) { if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } boolean id_found = FALSE; boolean criticality_found = FALSE; boolean extensionValue_found = FALSE; while (TRUE) { char* fld_name = 0; size_t name_len = 0; size_t buf_pos = p_tok.get_buf_pos(); dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_NAME != j_token) { p_tok.set_buf_pos(buf_pos); break; } else { if (2 == name_len && 0 == strncmp(fld_name, "id", name_len)) { id_found = TRUE; int ret_val = field_id.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 2, "id"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (11 == name_len && 0 == strncmp(fld_name, "criticality", name_len)) { criticality_found = TRUE; int ret_val = field_criticality.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 11, "criticality"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else if (14 == name_len && 0 == strncmp(fld_name, "extensionValue", name_len)) { extensionValue_found = TRUE; int ret_val = field_extensionValue.JSON_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 14, "extensionValue"); } return JSON_ERROR_FATAL; } dec_len += (size_t)ret_val; } else { if (p_silent) { return JSON_ERROR_INVALID_TOKEN; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_NUMBER != j_token && JSON_TOKEN_STRING != j_token && JSON_TOKEN_LITERAL_TRUE != j_token && JSON_TOKEN_LITERAL_FALSE != j_token && JSON_TOKEN_LITERAL_NULL != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } if (!id_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "id"); return JSON_ERROR_FATAL; } if (!criticality_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "criticality"); return JSON_ERROR_FATAL; } if (!extensionValue_found) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_MISSING_FIELD_ERROR, "extensionValue"); return JSON_ERROR_FATAL; } return (int)dec_len; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound record value."); return -1; } field_id.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_buf); field_criticality.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_buf); field_extensionValue.OER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_buf); return 0; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { field_id.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_buf, p_oer); field_criticality.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_buf, p_oer); field_extensionValue.OER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_buf, p_oer); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: "); TTCN_Type_list p_typelist; OER_decode_opentypes(p_typelist, p_buf, p_oer); return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::OER_decode_opentypes(TTCN_Type_list& p_typelist, TTCN_Buffer& p_buf, OER_struct& p_oer) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("criticality': "); field_criticality.OER_decode_opentypes(p_typelist, p_buf, p_oer); ec_1.set_msg("extensionValue': "); field_extensionValue.OER_decode_opentypes(p_typelist, p_buf, p_oer); p_typelist.pop(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::PER_encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound SEQUENCE value."); return; } field_id.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_buf, p_options); field_criticality.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_buf, p_options); field_extensionValue.PER_encode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_buf, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::PER_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_options) { clean_up(); field_id.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_id_descr_, p_buf, p_options); field_criticality.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_criticality_descr_, p_buf, p_options); field_extensionValue.PER_decode(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_descr_, p_buf, p_options); TTCN_EncDec_ErrorContext ec_1("While decoding opentypes: ");TTCN_Type_list p_typelist; PER_decode_opentypes(p_typelist, p_options); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18::PER_decode_opentypes(TTCN_Type_list& p_typelist, int p_options) { p_typelist.push(this); TTCN_EncDec_ErrorContext ec_0("Component '"); TTCN_EncDec_ErrorContext ec_1; ec_1.set_msg("id': "); field_id.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("criticality': "); field_criticality.PER_decode_opentypes(p_typelist, p_options); ec_1.set_msg("extensionValue': "); field_extensionValue.PER_decode_opentypes(p_typelist, p_options); p_typelist.pop(); } struct _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::single_value_struct { INTEGER_template field_id; RANAP__CommonDataTypes::Criticality_template field_criticality; _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template field_extensionValue; }; void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::set_specific() { if (template_selection != SPECIFIC_VALUE) { template_sel old_selection = template_selection; clean_up(); single_value = new single_value_struct; set_selection(SPECIFIC_VALUE); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) { single_value->field_id = ANY_VALUE; single_value->field_criticality = ANY_VALUE; single_value->field_extensionValue = ANY_VALUE; } } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::copy_value(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) { single_value = new single_value_struct; if (other_value.id().is_bound()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (other_value.criticality().is_bound()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (other_value.extensionValue().is_bound()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } set_selection(SPECIFIC_VALUE); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::copy_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) { single_value->field_id = other_value.id(); } else { single_value->field_id.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.criticality().get_selection()) { single_value->field_criticality = other_value.criticality(); } else { single_value->field_criticality.clean_up(); } if (UNINITIALIZED_TEMPLATE != other_value.extensionValue().get_selection()) { single_value->field_extensionValue = other_value.extensionValue(); } else { single_value->field_extensionValue.clean_up(); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(*other_value.implication_.precondition); implication_.implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); break; } set_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template() { } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) { copy_value(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18>& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 from an unbound optional field."); } } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template* p_precondition, _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(Dynamic_Match_Interface<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18>* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18>; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& other_value) : Base_Template() { copy_template(other_value); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::~_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template() { clean_up(); } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value) { clean_up(); copy_value(other_value); return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::operator=(const OPTIONAL<_root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18>& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); } return *this; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::operator=(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: if(!other_value.id().is_bound()) return FALSE; if(!single_value->field_id.match(other_value.id(), legacy))return FALSE; if(!other_value.criticality().is_bound()) return FALSE; if(!single_value->field_criticality.match(other_value.criticality(), legacy))return FALSE; if(!other_value.extensionValue().is_bound()) return FALSE; if(!single_value->field_extensionValue.match(other_value.extensionValue(), legacy))return FALSE; return TRUE; case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error("Matching an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); } return FALSE; } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::is_bound() const { if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; if (template_selection != SPECIFIC_VALUE) return TRUE; return single_value->field_id.is_bound() || single_value->field_criticality.is_bound() || single_value->field_extensionValue.is_bound(); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; return single_value->field_id.is_value() && single_value->field_criticality.is_value() && single_value->field_extensionValue.is_value(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: delete single_value; break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18 _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18 ret_val; if (single_value->field_id.is_bound()) { ret_val.id() = single_value->field_id.valueof(); } if (single_value->field_criticality.is_bound()) { ret_val.criticality() = single_value->field_criticality.valueof(); } if (single_value->field_extensionValue.is_bound()) { ret_val.extensionValue() = single_value->field_extensionValue.valueof(); } return ret_val; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST&& template_type != CONJUNCTION_MATCH) TTCN_error("Setting an invalid list for a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template[list_length]; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST&& template_selection != CONJUNCTION_MATCH) TTCN_error("Accessing a list element of a non-list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); return value_list.list_value[list_index]; } INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::id() { set_specific(); return single_value->field_id; } const INTEGER_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::id() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field id of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); return single_value->field_id; } RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::criticality() { set_specific(); return single_value->field_criticality; } const RANAP__CommonDataTypes::Criticality_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::criticality() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field criticality of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); return single_value->field_criticality; } _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::extensionValue() { set_specific(); return single_value->field_extensionValue; } const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_extensionValue_type_template& _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::extensionValue() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extensionValue of a non-specific template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); return single_value->field_extensionValue; } int _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::size_of() const { if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 which has an ifpresent attribute."); switch (template_selection) { case SPECIFIC_VALUE: return 3; case VALUE_LIST: { if (value_list.n_values<1) TTCN_error("Internal error: Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing an empty list."); int item_size = value_list.list_value[0].size_of(); for (unsigned int l_idx = 1; l_idx < value_list.n_values; l_idx++) { if (value_list.list_value[l_idx].size_of()!=item_size) TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing a value list with different sizes."); } return item_size; } case OMIT_VALUE: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing omit value."); case ANY_VALUE: case ANY_OR_OMIT: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing */? value."); case COMPLEMENTED_LIST: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing complemented list."); case CONJUNCTION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing a conjunction list match."); case IMPLICATION_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing an implication match."); case DYNAMIC_MATCH: TTCN_error("Performing sizeof() operation on a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18 containing a dynamic match."); default: TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); } return 0; } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log(); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log(); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log(); TTCN_Logger::log_event_str(" }"); break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::log_match(const _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ if(match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); } else{ if (template_selection == SPECIFIC_VALUE) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); if(!single_value->field_id.match(match_value.id(), legacy)){ TTCN_Logger::log_logmatch_info(".id"); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_criticality.match(match_value.criticality(), legacy)){ TTCN_Logger::log_logmatch_info(".criticality"); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } if(!single_value->field_extensionValue.match(match_value.extensionValue(), legacy)){ TTCN_Logger::log_logmatch_info(".extensionValue"); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } }else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); TTCN_Logger::log_event_str(" unmatched"); } } return; } if (template_selection == SPECIFIC_VALUE) { TTCN_Logger::log_event_str("{ id := "); single_value->field_id.log_match(match_value.id(), legacy); TTCN_Logger::log_event_str(", criticality := "); single_value->field_criticality.log_match(match_value.criticality(), legacy); TTCN_Logger::log_event_str(", extensionValue := "); single_value->field_extensionValue.log_match(match_value.extensionValue(), legacy); TTCN_Logger::log_event_str(" }"); } else { match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; if (id().is_bound()) id().set_implicit_omit(); if (criticality().is_bound()) criticality().set_implicit_omit(); if (extensionValue().is_bound()) extensionValue().set_implicit_omit(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value->field_id.encode_text(text_buf); single_value->field_criticality.encode_text(text_buf); single_value->field_extensionValue.encode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: single_value = new single_value_struct; single_value->field_id.decode_text(text_buf); single_value->field_criticality.decode_text(text_buf); single_value->field_extensionValue.decode_text(text_buf); case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: An unknown/unsupported selection was received in a template of type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18."); } } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_TEMPLATE, "record template"); switch (param.get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template new_temp; new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (param.get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), param.get_size()); for (size_t p_i=0; p_i0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) id().set_param(*param.get_elem(0)); if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) criticality().set_param(*param.get_elem(1)); if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) extensionValue().set_param(*param.get_elem(2)); break; case Module_Param::MP_Assignment_List: { Vector value_used(param.get_size()); value_used.resize(param.get_size(), FALSE); for (size_t val_idx=0; val_idxget_id()->get_name(), "id")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { id().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "criticality")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { criticality().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxget_id()->get_name(), "extensionValue")) { if (curr_param->get_type()!=Module_Param::MP_NotUsed) { extensionValue().set_param(*curr_param); } value_used[val_idx]=TRUE; } } for (size_t val_idx=0; val_idxerror("Non existent field name in type @RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18: %s", curr_param->get_id()->get_name()); break; } } break; case Module_Param::MP_Implication_Template: { _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template* precondition = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; precondition->set_param(*param.get_elem(0)); _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template* implied_template = new _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template; implied_template->set_param(*param.get_elem(1)); *this = _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template(precondition, implied_template); } break; default: param.type_error("record template", "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); } is_ifpresent = param.get_ifpresent(); } void _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; single_value->field_id.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); single_value->field_criticality.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); single_value->field_extensionValue.check_restriction(t_res, t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); return; case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-Containers.ProtocolExtensionField.RANAP-IEs.inst18"); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean _root_RANAP__Containers_ProtocolExtensionField_RANAP__IEs_inst18_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int l_idx=0; l_idxis_value(); case ALT_geographicalArea: return field_geographicalArea->is_value(); default: TTCN_error("Invalid selection in union is_bound");} } void AreaIdentity::clean_up() { switch (union_selection) { case ALT_sAI: delete field_sAI; break; case ALT_geographicalArea: delete field_geographicalArea; break; default: break; } union_selection = UNBOUND_VALUE; } void AreaIdentity::log() const { switch (union_selection) { case ALT_sAI: TTCN_Logger::log_event_str("{ sAI := "); field_sAI->log(); TTCN_Logger::log_event_str(" }"); break; case ALT_geographicalArea: TTCN_Logger::log_event_str("{ geographicalArea := "); field_geographicalArea->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_unbound(); } } void AreaIdentity::set_param(Module_Param& param) { param.basic_check(Module_Param::BC_VALUE, "union value"); Module_Param_Ptr m_p = ¶m; if (m_p->get_type()==Module_Param::MP_Value_List && m_p->get_size()==0) return; if (m_p->get_type()!=Module_Param::MP_Assignment_List) { param.error("union value with field name was expected"); } Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "sAI")) { sAI().set_param(*mp_last); if (!sAI().is_bound()) clean_up(); return; } if (!strcmp(last_name, "geographicalArea")) { geographicalArea().set_param(*mp_last); if (!geographicalArea().is_bound()) clean_up(); return; } mp_last->error("Field %s does not exist in type @RANAP-IEs.AreaIdentity.", last_name); } void AreaIdentity::set_implicit_omit() { switch (union_selection) { case ALT_sAI: field_sAI->set_implicit_omit(); break; case ALT_geographicalArea: field_geographicalArea->set_implicit_omit(); break; default: break; } } void AreaIdentity::encode_text(Text_Buf& text_buf) const { text_buf.push_int(union_selection); switch (union_selection) { case ALT_sAI: field_sAI->encode_text(text_buf); break; case ALT_geographicalArea: field_geographicalArea->encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an unbound value of union type @RANAP-IEs.AreaIdentity."); } } void AreaIdentity::decode_text(Text_Buf& text_buf) { switch ((union_selection_type)text_buf.pull_int().get_val()) { case ALT_sAI: sAI().decode_text(text_buf); break; case ALT_geographicalArea: geographicalArea().decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for type @RANAP-IEs.AreaIdentity."); } } void AreaIdentity::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) const { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-encoding type '%s': ", p_td.name); unsigned BER_coding=va_arg(pvar, unsigned); BER_encode_chk_coding(BER_coding); ASN_BER_TLV_t *tlv=BER_encode_TLV(p_td, BER_coding); tlv->put_in_buffer(p_buf); ASN_BER_TLV_t::destruct(tlv); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-encoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); RAW_enc_tr_pos rp; rp.level=0; rp.pos=NULL; RAW_enc_tree root(TRUE, NULL, &rp, 1, p_td.raw); RAW_encode(p_td, root); root.put_to_buf(p_buf); break;} case TTCN_EncDec::CT_TEXT: { TTCN_EncDec_ErrorContext ec("While TEXT-encoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); TEXT_encode(p_td,p_buf); break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-encoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XER_encode(*(p_td.xer),p_buf, XER_coding, 0, 0, 0); p_buf.put_c('\n'); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-encoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok(va_arg(pvar, int) != 0); JSON_encode(p_td, tok, FALSE); p_buf.put_s(tok.get_buffer_length(), (const unsigned char*)tok.get_buffer()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-encoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_encode(p_td, p_buf); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-encoding type '%s': ", p_td.name); if (!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); PER_encode(p_td, p_buf, opt); break; } default: TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); } va_end(pvar); } void AreaIdentity::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int p_coding, ...) { va_list pvar; va_start(pvar, p_coding); switch(p_coding) { case TTCN_EncDec::CT_BER: { TTCN_EncDec_ErrorContext ec("While BER-decoding type '%s': ", p_td.name); unsigned L_form=va_arg(pvar, unsigned); ASN_BER_TLV_t tlv; BER_decode_str2TLV(p_buf, tlv, L_form); BER_decode_TLV(p_td, tlv, L_form); if(tlv.isComplete) p_buf.increase_pos(tlv.get_len()); break;} case TTCN_EncDec::CT_RAW: { TTCN_EncDec_ErrorContext ec("While RAW-decoding type '%s': ", p_td.name); if(!p_td.raw) TTCN_EncDec_ErrorContext::error_internal ("No RAW descriptor available for type '%s'.", p_td.name); raw_order_t r_order; switch(p_td.raw->top_bit_order) { case TOP_BIT_LEFT: r_order=ORDER_LSB; break; case TOP_BIT_RIGHT: default: r_order=ORDER_MSB; } int rawr = RAW_decode(p_td, p_buf, p_buf.get_len()*8, r_order); if(rawr<0) switch (-rawr) { case TTCN_EncDec::ET_INCOMPL_MSG: case TTCN_EncDec::ET_LEN_ERR: ec.error((TTCN_EncDec::error_type_t)-rawr, "Can not decode type '%s', because incomplete message was received", p_td.name); break; case 1: default: ec.error(TTCN_EncDec::ET_INVAL_MSG, "Can not decode type '%s', because invalid message was received", p_td.name); break; } break;} case TTCN_EncDec::CT_TEXT: { Limit_Token_List limit; TTCN_EncDec_ErrorContext ec("While TEXT-decoding type '%s': ", p_td.name); if(!p_td.text) TTCN_EncDec_ErrorContext::error_internal ("No TEXT descriptor available for type '%s'.", p_td.name); const unsigned char *b_data=p_buf.get_data(); int null_added=0; if(b_data[p_buf.get_len()-1]!='\0'){ null_added=1; p_buf.set_pos(p_buf.get_len()); p_buf.put_zero(8,ORDER_LSB); p_buf.rewind(); } if(TEXT_decode(p_td,p_buf,limit)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); if(null_added){ size_t actpos=p_buf.get_pos(); p_buf.set_pos(p_buf.get_len()-1); p_buf.cut_end(); p_buf.set_pos(actpos); } break;} case TTCN_EncDec::CT_XER: { TTCN_EncDec_ErrorContext ec("While XER-decoding type '%s': ", p_td.name); unsigned XER_coding=va_arg(pvar, unsigned); XER_encode_chk_coding(XER_coding, p_td); XmlReaderWrap reader(p_buf); for (int rd_ok=reader.Read(); rd_ok==1; rd_ok=reader.Read()) { if (reader.NodeType() == XML_READER_TYPE_ELEMENT) break; } XER_decode(*(p_td.xer), reader, XER_coding | XER_TOPLEVEL, XER_NONE, 0); size_t bytes = reader.ByteConsumed(); p_buf.set_pos(bytes); break;} case TTCN_EncDec::CT_JSON: { TTCN_EncDec_ErrorContext ec("While JSON-decoding type '%s': ", p_td.name); if(!p_td.json) TTCN_EncDec_ErrorContext::error_internal ("No JSON descriptor available for type '%s'.", p_td.name); JSON_Tokenizer tok((const char*)p_buf.get_data(), p_buf.get_len()); if(JSON_decode(p_td, tok, FALSE, FALSE)<0) ec.error(TTCN_EncDec::ET_INCOMPL_MSG,"Can not decode type '%s', because invalid or incomplete message was received", p_td.name); p_buf.set_pos(tok.get_buf_pos()); break;} case TTCN_EncDec::CT_OER: { TTCN_EncDec_ErrorContext ec("While OER-decoding type '%s': ", p_td.name); if(!p_td.oer) TTCN_EncDec_ErrorContext::error_internal ("No OER descriptor available for type '%s'.", p_td.name); OER_struct p_oer; OER_decode(p_td, p_buf, p_oer); break;} case TTCN_EncDec::CT_PER: { TTCN_EncDec_ErrorContext ec("While PER-decoding type '%s': ", p_td.name); if(!p_td.per) TTCN_EncDec_ErrorContext::error_internal( "No PER descriptor available for type '%s'.", p_td.name); int opt = va_arg(pvar, int); try { PER_decode(p_td, p_buf, opt); p_buf.PER_octet_align(FALSE); } catch (PER_Buffer_Exception) { } break; } default: TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); } va_end(pvar); } ASN_BER_TLV_t *AreaIdentity::BER_encode_TLV(const TTCN_Typedescriptor_t& p_td, unsigned p_coding) const { BER_chk_descr(p_td); ASN_BER_TLV_t *new_tlv; TTCN_EncDec_ErrorContext ec_0("Alternative '"); TTCN_EncDec_ErrorContext ec_1; switch (union_selection) { case ALT_sAI: ec_1.set_msg("sAI': "); new_tlv = field_sAI->BER_encode_TLV(AreaIdentity_sAI_descr_, p_coding); break; case ALT_geographicalArea: ec_1.set_msg("geographicalArea': "); new_tlv = field_geographicalArea->BER_encode_TLV(AreaIdentity_geographicalArea_descr_, p_coding); break; case UNBOUND_VALUE: new_tlv = BER_encode_chk_bound(FALSE); break; default: TTCN_EncDec_ErrorContext::error_internal("Unknown selection."); new_tlv = NULL; } return ASN_BER_V2TLV(new_tlv, p_td, p_coding); } boolean AreaIdentity::BER_decode_set_selection(const ASN_BER_TLV_t& p_tlv) { clean_up(); field_sAI = new SAI; union_selection = ALT_sAI; if (field_sAI->BER_decode_isMyMsg(AreaIdentity_sAI_descr_, p_tlv)) return TRUE; delete field_sAI; field_geographicalArea = new GeographicalArea; union_selection = ALT_geographicalArea; if (field_geographicalArea->BER_decode_isMyMsg(AreaIdentity_geographicalArea_descr_, p_tlv)) return TRUE; delete field_geographicalArea; union_selection = UNBOUND_VALUE; return FALSE; } boolean AreaIdentity::BER_decode_isMyMsg(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv) { if (p_td.ber->n_tags == 0) { AreaIdentity tmp_type; return tmp_type.BER_decode_set_selection(p_tlv); } else return Base_Type::BER_decode_isMyMsg(p_td, p_tlv); } boolean AreaIdentity::BER_decode_TLV(const TTCN_Typedescriptor_t& p_td, const ASN_BER_TLV_t& p_tlv, unsigned L_form) { BER_chk_descr(p_td); ASN_BER_TLV_t stripped_tlv; BER_decode_strip_tags(*p_td.ber, p_tlv, L_form, stripped_tlv); TTCN_EncDec_ErrorContext ec_0("While decoding '@RANAP-IEs.AreaIdentity' type: "); ASN_BER_TLV_t tmp_tlv; if (!BER_decode_TLV_CHOICE(*p_td.ber, stripped_tlv, L_form, tmp_tlv) || !BER_decode_CHOICE_selection(BER_decode_set_selection(tmp_tlv), tmp_tlv)) return FALSE; TTCN_EncDec_ErrorContext ec_1("Alternative '"); TTCN_EncDec_ErrorContext ec_2; switch (union_selection) { case ALT_sAI: ec_2.set_msg("sAI': "); field_sAI->BER_decode_TLV(AreaIdentity_sAI_descr_, tmp_tlv, L_form); break; case ALT_geographicalArea: ec_2.set_msg("geographicalArea': "); field_geographicalArea->BER_decode_TLV(AreaIdentity_geographicalArea_descr_, tmp_tlv, L_form); break; default: return FALSE; } return TRUE; } int AreaIdentity::JSON_encode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean) const { boolean as_value = p_td.json->as_value; int enc_len = as_value ? 0 : p_tok.put_next_token(JSON_TOKEN_OBJECT_START, NULL); switch(union_selection) { case ALT_sAI: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "sAI"); } enc_len += field_sAI->JSON_encode(AreaIdentity_sAI_descr_, p_tok, FALSE); break; case ALT_geographicalArea: if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_NAME, "geographicalArea"); } enc_len += field_geographicalArea->JSON_encode(AreaIdentity_geographicalArea_descr_, p_tok, FALSE); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.AreaIdentity."); return -1; } if (!as_value) { enc_len += p_tok.put_next_token(JSON_TOKEN_OBJECT_END, NULL); } return enc_len; } int AreaIdentity::JSON_decode(const TTCN_Typedescriptor_t& p_td, JSON_Tokenizer& p_tok, boolean p_silent, boolean, int p_chosen_field) { if (0 <= p_chosen_field && 2 > p_chosen_field) { switch (p_chosen_field) { case 0: return sAI().JSON_decode(AreaIdentity_sAI_descr_, p_tok, TRUE, FALSE); case 1: return geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); } } if (p_td.json->default_value.type == JD_STANDARD && 0 == p_tok.get_buffer_length()) { *this = *static_cast(p_td.json->default_value.val); return 0; } json_token_t j_token = JSON_TOKEN_NONE; if (p_td.json->as_value) { size_t buf_pos = p_tok.get_buf_pos(); p_tok.get_next_token(&j_token, NULL, NULL); int ret_val = 0; switch(j_token) { case JSON_TOKEN_NUMBER: { p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "number '@RANAP-IEs.AreaIdentity'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_STRING: { p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "string '@RANAP-IEs.AreaIdentity'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_TRUE: case JSON_TOKEN_LITERAL_FALSE: { p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } char* literal_str = mprintf("literal (%s)", (JSON_TOKEN_LITERAL_TRUE == j_token) ? "true" : "false"); try { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, literal_str); } catch (const TC_Error&) { Free(literal_str); throw; } Free(literal_str); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_ARRAY_START: { p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "array '@RANAP-IEs.AreaIdentity'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_OBJECT_START: { p_tok.set_buf_pos(buf_pos); ret_val = sAI().JSON_decode(AreaIdentity_sAI_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_AS_VALUE_ERROR, "object '@RANAP-IEs.AreaIdentity'"); clean_up(); return JSON_ERROR_FATAL; } case JSON_TOKEN_LITERAL_NULL: { p_tok.set_buf_pos(buf_pos); ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, TRUE, FALSE); if (0 <= ret_val) { return ret_val; } clean_up(); return JSON_ERROR_INVALID_TOKEN; } case JSON_TOKEN_ERROR: JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; default: return JSON_ERROR_INVALID_TOKEN; } return ret_val; } else { size_t dec_len = p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_ERROR == j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_BAD_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } else if (JSON_TOKEN_OBJECT_START != j_token) { return JSON_ERROR_INVALID_TOKEN; } char* fld_name = 0; size_t name_len = 0; dec_len += p_tok.get_next_token(&j_token, &fld_name, &name_len); if (JSON_TOKEN_NAME != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_NAME_TOKEN_ERROR); return JSON_ERROR_FATAL; } else { if (3 == name_len && 0 == strncmp(fld_name, "sAI", name_len)) { int ret_val = sAI().JSON_decode(AreaIdentity_sAI_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 3, "sAI"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else if (16 == name_len && 0 == strncmp(fld_name, "geographicalArea", name_len)) { int ret_val = geographicalArea().JSON_decode(AreaIdentity_geographicalArea_descr_, p_tok, p_silent, FALSE); if (0 > ret_val) { if (JSON_ERROR_INVALID_TOKEN == ret_val) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_FIELD_TOKEN_ERROR, 16, "geographicalArea"); } return JSON_ERROR_FATAL; } else { dec_len += (size_t)ret_val; } } else { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_INVALID_NAME_ERROR, (int)name_len, fld_name); return JSON_ERROR_FATAL; } } dec_len += p_tok.get_next_token(&j_token, NULL, NULL); if (JSON_TOKEN_OBJECT_END != j_token) { JSON_ERROR(TTCN_EncDec::ET_INVAL_MSG, JSON_DEC_STATIC_OBJECT_END_TOKEN_ERROR, ""); return JSON_ERROR_FATAL; } return (int)dec_len; } } int AreaIdentity::OER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf) const { switch(union_selection) { case ALT_sAI: {TTCN_Buffer buf; encode_oer_tag(*AreaIdentity_sAI_descr_.ber, p_buf); field_sAI->OER_encode(AreaIdentity_sAI_descr_, buf); p_buf.put_buf(buf); break; } case ALT_geographicalArea: {TTCN_Buffer buf; encode_oer_tag(*AreaIdentity_geographicalArea_descr_.ber, p_buf); field_geographicalArea->OER_encode(AreaIdentity_geographicalArea_descr_, buf); p_buf.put_buf(buf); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value of type @RANAP-IEs.AreaIdentity."); return -1; } return 0; } int AreaIdentity::OER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, OER_struct& p_oer) { const ASN_Tag_t& descr = decode_oer_tag(p_buf); if (AreaIdentity_sAI_descr_.ber->tags[AreaIdentity_sAI_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaIdentity_sAI_descr_.ber->tags[AreaIdentity_sAI_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { sAI().OER_decode(AreaIdentity_sAI_descr_, p_buf, p_oer); } else if (AreaIdentity_geographicalArea_descr_.ber->tags[AreaIdentity_geographicalArea_descr_.ber->n_tags-1].tagclass == descr.tagclass && AreaIdentity_geographicalArea_descr_.ber->tags[AreaIdentity_geographicalArea_descr_.ber->n_tags-1].tagnumber == descr.tagnumber) { geographicalArea().OER_decode(AreaIdentity_geographicalArea_descr_, p_buf, p_oer); } else { TTCN_error("Cannot find matching tag for type AreaIdentity"); } return 0; } void AreaIdentity::PER_encode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) const { if (!is_bound()) { TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound CHOICE value."); return; } p_buf.PER_put_bit(FALSE); switch (union_selection) { case ALT_sAI: { INTEGER::PER_encode_int(p_buf, 0, 1); field_sAI->PER_encode(AreaIdentity_sAI_descr_, p_buf, p_options); break; } case ALT_geographicalArea: { INTEGER::PER_encode_int(p_buf, 1, 1); field_geographicalArea->PER_encode(AreaIdentity_geographicalArea_descr_, p_buf, p_options); break; } default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Internal error: Invalid CHOICE selection, expected an extension root field."); break; } } void AreaIdentity::PER_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer& p_buf, int p_options) { clean_up(); boolean ext_bit = p_buf.PER_get_bit(); if (ext_bit) { INTEGER sel_code; sel_code.PER_decode_normally_small(p_buf, p_options); PER_skip_opentype(p_buf, p_options); } else { int sel_int; INTEGER::PER_decode_int(p_buf, 1, FALSE, sel_int); switch (sel_int) { case 0: sAI().PER_decode(AreaIdentity_sAI_descr_, p_buf, p_options); break; case 1: geographicalArea().PER_decode(AreaIdentity_geographicalArea_descr_, p_buf, p_options); break; default: TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_INVAL_MSG, "Decoded invalid CHOICE selection (%d).", sel_int); break; } } } void AreaIdentity_template::copy_value(const AreaIdentity& other_value) { single_value.union_selection = other_value.get_selection(); switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI = new SAI_template(other_value.sAI()); break; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea = new GeographicalArea_template(other_value.geographicalArea()); break; default: TTCN_error("Initializing a template with an unbound value of type @RANAP-IEs.AreaIdentity."); } set_selection(SPECIFIC_VALUE); } void AreaIdentity_template::copy_template(const AreaIdentity_template& other_value) { switch (other_value.template_selection) { case SPECIFIC_VALUE: single_value.union_selection = other_value.single_value.union_selection; switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI = new SAI_template(*other_value.single_value.field_sAI); break; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea = new GeographicalArea_template(*other_value.single_value.field_geographicalArea); break; default: TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @RANAP-IEs.AreaIdentity."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: value_list.n_values = other_value.value_list.n_values; value_list.list_value = new AreaIdentity_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].copy_template(other_value.value_list.list_value[list_count]); break; case IMPLICATION_MATCH: implication_.precondition = new AreaIdentity_template(*other_value.implication_.precondition); implication_.implied_template = new AreaIdentity_template(*other_value.implication_.implied_template); break; case DYNAMIC_MATCH: dyn_match = other_value.dyn_match; dyn_match->ref_count++; break; default: TTCN_error("Copying an uninitialized template of union type @RANAP-IEs.AreaIdentity."); } set_selection(other_value); } AreaIdentity_template::AreaIdentity_template() { } AreaIdentity_template::AreaIdentity_template(template_sel other_value) : Base_Template(other_value) { check_single_selection(other_value); } AreaIdentity_template::AreaIdentity_template(const AreaIdentity& other_value) { copy_value(other_value); } AreaIdentity_template::AreaIdentity_template(const OPTIONAL& other_value) { switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AreaIdentity&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Creating a template of union type @RANAP-IEs.AreaIdentity from an unbound optional field."); } } AreaIdentity_template::AreaIdentity_template(AreaIdentity_template* p_precondition, AreaIdentity_template* p_implied_template) : Base_Template(IMPLICATION_MATCH) { implication_.precondition = p_precondition; implication_.implied_template = p_implied_template; } AreaIdentity_template::AreaIdentity_template(Dynamic_Match_Interface* p_dyn_match) : Base_Template(DYNAMIC_MATCH) { dyn_match = new dynmatch_struct; dyn_match->ptr = p_dyn_match; dyn_match->ref_count = 1; } AreaIdentity_template::AreaIdentity_template(const AreaIdentity_template& other_value) : Base_Template(){ copy_template(other_value); } AreaIdentity_template::~AreaIdentity_template() { clean_up(); } void AreaIdentity_template::clean_up() { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: delete single_value.field_sAI; break; case AreaIdentity::ALT_geographicalArea: delete single_value.field_geographicalArea; default: break; } break; case VALUE_LIST: case COMPLEMENTED_LIST: case CONJUNCTION_MATCH: delete [] value_list.list_value; break; case IMPLICATION_MATCH: delete implication_.precondition; delete implication_.implied_template; break; case DYNAMIC_MATCH: dyn_match->ref_count--; if (dyn_match->ref_count == 0) { delete dyn_match->ptr; delete dyn_match; } break; default: break; } template_selection = UNINITIALIZED_TEMPLATE; } AreaIdentity_template& AreaIdentity_template::operator=(template_sel other_value) { check_single_selection(other_value); clean_up(); set_selection(other_value); return *this; } AreaIdentity_template& AreaIdentity_template::operator=(const AreaIdentity& other_value) { clean_up(); copy_value(other_value); return *this; } AreaIdentity_template& AreaIdentity_template::operator=(const OPTIONAL& other_value) { clean_up(); switch (other_value.get_selection()) { case OPTIONAL_PRESENT: copy_value((const AreaIdentity&)other_value); break; case OPTIONAL_OMIT: set_selection(OMIT_VALUE); break; default: TTCN_error("Assignment of an unbound optional field to a template of union type @RANAP-IEs.AreaIdentity."); } return *this; } AreaIdentity_template& AreaIdentity_template::operator=(const AreaIdentity_template& other_value) { if (&other_value != this) { clean_up(); copy_template(other_value); } return *this; } boolean AreaIdentity_template::match(const AreaIdentity& other_value, boolean legacy) const { if (!other_value.is_bound()) return FALSE; switch (template_selection) { case ANY_VALUE: case ANY_OR_OMIT: return TRUE; case OMIT_VALUE: return FALSE; case SPECIFIC_VALUE: { AreaIdentity::union_selection_type value_selection = other_value.get_selection(); if (value_selection == AreaIdentity::UNBOUND_VALUE) return FALSE; if (value_selection != single_value.union_selection) return FALSE; switch (value_selection) { case AreaIdentity::ALT_sAI: return single_value.field_sAI->match(other_value.sAI(), legacy); case AreaIdentity::ALT_geographicalArea: return single_value.field_geographicalArea->match(other_value.geographicalArea(), legacy); default: TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @RANAP-IEs.AreaIdentity."); } } case VALUE_LIST: case COMPLEMENTED_LIST: for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) if (value_list.list_value[list_count].match(other_value, legacy)) return template_selection == VALUE_LIST; return template_selection == COMPLEMENTED_LIST; case CONJUNCTION_MATCH: for (unsigned int i = 0; i < value_list.n_values; i++) { if (!value_list.list_value[i].match(other_value)) { return FALSE; } } return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match(other_value) || implication_.implied_template->match(other_value); case DYNAMIC_MATCH: return dyn_match->ptr->match(other_value); default: TTCN_error ("Matching an uninitialized template of union type @RANAP-IEs.AreaIdentity."); } return FALSE; } boolean AreaIdentity_template::is_value() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: return single_value.field_sAI->is_value(); case AreaIdentity::ALT_geographicalArea: return single_value.field_geographicalArea->is_value(); default: TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @RANAP-IEs.AreaIdentity."); } } AreaIdentity AreaIdentity_template::valueof() const { if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of union type @RANAP-IEs.AreaIdentity."); AreaIdentity ret_val; switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: ret_val.sAI() = single_value.field_sAI->valueof(); break; case AreaIdentity::ALT_geographicalArea: ret_val.geographicalArea() = single_value.field_geographicalArea->valueof(); break; default: TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @RANAP-IEs.AreaIdentity."); } return ret_val; } AreaIdentity_template& AreaIdentity_template::list_item(unsigned int list_index) const { if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST && template_selection != CONJUNCTION_MATCH) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @RANAP-IEs.AreaIdentity."); if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @RANAP-IEs.AreaIdentity."); return value_list.list_value[list_index]; } void AreaIdentity_template::set_type(template_sel template_type, unsigned int list_length) { if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST && template_type != CONJUNCTION_MATCH) TTCN_error ("Internal error: Setting an invalid list for a template of union type @RANAP-IEs.AreaIdentity."); clean_up(); set_selection(template_type); value_list.n_values = list_length; value_list.list_value = new AreaIdentity_template[list_length]; } SAI_template& AreaIdentity_template::sAI() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaIdentity::ALT_sAI) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_sAI = new SAI_template(ANY_VALUE); else single_value.field_sAI = new SAI_template; single_value.union_selection = AreaIdentity::ALT_sAI; set_selection(SPECIFIC_VALUE); } return *single_value.field_sAI; } const SAI_template& AreaIdentity_template::sAI() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sAI in a non-specific template of union type @RANAP-IEs.AreaIdentity."); if (single_value.union_selection != AreaIdentity::ALT_sAI) TTCN_error("Accessing non-selected field sAI in a template of union type @RANAP-IEs.AreaIdentity."); return *single_value.field_sAI; } GeographicalArea_template& AreaIdentity_template::geographicalArea() { if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AreaIdentity::ALT_geographicalArea) { template_sel old_selection = template_selection; clean_up(); if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_geographicalArea = new GeographicalArea_template(ANY_VALUE); else single_value.field_geographicalArea = new GeographicalArea_template; single_value.union_selection = AreaIdentity::ALT_geographicalArea; set_selection(SPECIFIC_VALUE); } return *single_value.field_geographicalArea; } const GeographicalArea_template& AreaIdentity_template::geographicalArea() const { if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field geographicalArea in a non-specific template of union type @RANAP-IEs.AreaIdentity."); if (single_value.union_selection != AreaIdentity::ALT_geographicalArea) TTCN_error("Accessing non-selected field geographicalArea in a template of union type @RANAP-IEs.AreaIdentity."); return *single_value.field_geographicalArea; } boolean AreaIdentity_template::ischosen(AreaIdentity::union_selection_type checked_selection) const { if (checked_selection == AreaIdentity::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @RANAP-IEs.AreaIdentity."); switch (template_selection) { case SPECIFIC_VALUE: if (single_value.union_selection == AreaIdentity::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @RANAP-IEs.AreaIdentity."); return single_value.union_selection == checked_selection; case VALUE_LIST: { if (value_list.n_values < 1) TTCN_error("Internal error: Performing ischosen() operation on a template of union type @RANAP-IEs.AreaIdentity containing an empty list."); boolean ret_val = value_list.list_value[0].ischosen(checked_selection); for (unsigned int list_count = 1; ret_val == TRUE && list_count < value_list.n_values; list_count++) { ret_val = value_list.list_value[list_count].ischosen(checked_selection); } return ret_val; } default: return FALSE; } return FALSE; } void AreaIdentity_template::log() const { switch (template_selection) { case SPECIFIC_VALUE: switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: TTCN_Logger::log_event_str("{ sAI := "); single_value.field_sAI->log(); TTCN_Logger::log_event_str(" }"); break; case AreaIdentity::ALT_geographicalArea: TTCN_Logger::log_event_str("{ geographicalArea := "); single_value.field_geographicalArea->log(); TTCN_Logger::log_event_str(" }"); break; default: TTCN_Logger::log_event_str(""); } break; case COMPLEMENTED_LIST: TTCN_Logger::log_event_str("complement"); case CONJUNCTION_MATCH: if (template_selection == CONJUNCTION_MATCH) { TTCN_Logger::log_event_str("conjunct"); } case VALUE_LIST: TTCN_Logger::log_char('('); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) { if (list_count > 0) TTCN_Logger::log_event_str(", "); value_list.list_value[list_count].log(); } TTCN_Logger::log_char(')'); break; case IMPLICATION_MATCH: implication_.precondition->log(); TTCN_Logger::log_event_str(" implies "); implication_.implied_template->log(); break; case DYNAMIC_MATCH: TTCN_Logger::log_event_str("@dynamic template"); break; default: log_generic(); } log_ifpresent(); } void AreaIdentity_template::log_match(const AreaIdentity& match_value, boolean legacy) const { if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity() && match(match_value, legacy)){ TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(" matched"); return; } if (template_selection == SPECIFIC_VALUE && single_value.union_selection == match_value.get_selection()) { size_t previous_size = TTCN_Logger::get_logmatch_buffer_len(); switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".sAI"); single_value.field_sAI->log_match(match_value.sAI(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ sAI := "); single_value.field_sAI->log_match(match_value.sAI(), legacy); TTCN_Logger::log_event_str(" }"); } break; case AreaIdentity::ALT_geographicalArea: if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ TTCN_Logger::log_logmatch_info(".geographicalArea"); single_value.field_geographicalArea->log_match(match_value.geographicalArea(), legacy); TTCN_Logger::set_logmatch_buffer_len(previous_size); } else { TTCN_Logger::log_event_str("{ geographicalArea := "); single_value.field_geographicalArea->log_match(match_value.geographicalArea(), legacy); TTCN_Logger::log_event_str(" }"); } break; default: TTCN_Logger::print_logmatch_buffer(); TTCN_Logger::log_event_str(""); } } else { TTCN_Logger::print_logmatch_buffer(); match_value.log(); TTCN_Logger::log_event_str(" with "); log(); if (match(match_value, legacy)) TTCN_Logger::log_event_str(" matched"); else TTCN_Logger::log_event_str(" unmatched"); } } void AreaIdentity_template::set_implicit_omit() { if (template_selection != SPECIFIC_VALUE) return; switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI->set_implicit_omit(); break; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea->set_implicit_omit(); break; default: break; } } void AreaIdentity_template::encode_text(Text_Buf& text_buf) const { encode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: text_buf.push_int(single_value.union_selection); switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI->encode_text(text_buf); break; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea->encode_text(text_buf); break; default: TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @RANAP-IEs.AreaIdentity."); } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: text_buf.push_int(value_list.n_values); for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].encode_text(text_buf); break; default: TTCN_error("Text encoder: Encoding an uninitialized template of type @RANAP-IEs.AreaIdentity."); } } void AreaIdentity_template::decode_text(Text_Buf& text_buf) { clean_up(); decode_text_base(text_buf); switch (template_selection) { case SPECIFIC_VALUE: { single_value.union_selection = AreaIdentity::UNBOUND_VALUE; AreaIdentity::union_selection_type new_selection = (AreaIdentity::union_selection_type)text_buf.pull_int().get_val(); switch (new_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI = new SAI_template; single_value.field_sAI->decode_text(text_buf); break; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea = new GeographicalArea_template; single_value.field_geographicalArea->decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @RANAP-IEs.AreaIdentity."); } single_value.union_selection = new_selection; } case OMIT_VALUE: case ANY_VALUE: case ANY_OR_OMIT: break; case VALUE_LIST: case COMPLEMENTED_LIST: value_list.n_values = text_buf.pull_int().get_val(); value_list.list_value = new AreaIdentity_template[value_list.n_values]; for (unsigned int list_count = 0; list_count < value_list.n_values; list_count++) value_list.list_value[list_count].decode_text(text_buf); break; default: TTCN_error("Text decoder: Unrecognized selector was received in a template of type @RANAP-IEs.AreaIdentity."); } } boolean AreaIdentity_template::is_present(boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; return !match_omit(legacy); } boolean AreaIdentity_template::match_omit(boolean legacy) const { if (is_ifpresent) return TRUE; switch (template_selection) { case OMIT_VALUE: case ANY_OR_OMIT: return TRUE; case IMPLICATION_MATCH: return !implication_.precondition->match_omit() || implication_.implied_template->match_omit(); case VALUE_LIST: case COMPLEMENTED_LIST: if (legacy) { for (unsigned int v_idx=0; v_idx(param.get_id()) != NULL && param.get_id()->next_name()) { char* param_field = param.get_id()->get_current_name(); if (param_field[0] >= '0' && param_field[0] <= '9') { param.error("Unexpected array index in module parameter, expected a valid field" " name for union template type `@RANAP-IEs.AreaIdentity'"); } if (strcmp("sAI", param_field) == 0) { sAI().set_param(param); return; } else if (strcmp("geographicalArea", param_field) == 0) { geographicalArea().set_param(param); return; } else param.error("Field `%s' not found in union template type `@RANAP-IEs.AreaIdentity'", param_field); } param.basic_check(Module_Param::BC_TEMPLATE, "union template"); Module_Param_Ptr m_p = ¶m; switch (m_p->get_type()) { case Module_Param::MP_Omit: *this = OMIT_VALUE; break; case Module_Param::MP_Any: *this = ANY_VALUE; break; case Module_Param::MP_AnyOrNone: *this = ANY_OR_OMIT; break; case Module_Param::MP_List_Template: case Module_Param::MP_ComplementList_Template: case Module_Param::MP_ConjunctList_Template: { AreaIdentity_template new_temp; new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : (m_p->get_type() == Module_Param::MP_ConjunctList_Template ? CONJUNCTION_MATCH : COMPLEMENTED_LIST), m_p->get_size()); for (size_t p_i=0; p_iget_size(); p_i++) { new_temp.list_item(p_i).set_param(*m_p->get_elem(p_i)); } *this = new_temp; break; } case Module_Param::MP_Value_List: if (m_p->get_size()==0) break; param.type_error("union template", "@RANAP-IEs.AreaIdentity"); break; case Module_Param::MP_Assignment_List: { Module_Param* mp_last = m_p->get_elem(m_p->get_size()-1); char* last_name = mp_last->get_id()->get_name(); if (!strcmp(last_name, "sAI")) { sAI().set_param(*mp_last); break; } if (!strcmp(last_name, "geographicalArea")) { geographicalArea().set_param(*mp_last); break; } mp_last->error("Field %s does not exist in type @RANAP-IEs.AreaIdentity.", last_name); } break; case Module_Param::MP_Implication_Template: { AreaIdentity_template* precondition = new AreaIdentity_template; precondition->set_param(*m_p->get_elem(0)); AreaIdentity_template* implied_template = new AreaIdentity_template; implied_template->set_param(*m_p->get_elem(1)); *this = AreaIdentity_template(precondition, implied_template); } break; default: param.type_error("union template", "@RANAP-IEs.AreaIdentity"); } is_ifpresent = param.get_ifpresent(); } void AreaIdentity_template::check_restriction(template_res t_res, const char* t_name, boolean legacy) const { if (template_selection==UNINITIALIZED_TEMPLATE) return; switch ((t_name&&(t_res==TR_VALUE))?TR_OMIT:t_res) { case TR_OMIT: if (template_selection==OMIT_VALUE) return; case TR_VALUE: if (template_selection!=SPECIFIC_VALUE || is_ifpresent) break; switch (single_value.union_selection) { case AreaIdentity::ALT_sAI: single_value.field_sAI->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaIdentity"); return; case AreaIdentity::ALT_geographicalArea: single_value.field_geographicalArea->check_restriction(t_res, t_name ? t_name : "@RANAP-IEs.AreaIdentity"); return; default: TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @RANAP-IEs.AreaIdentity."); } case TR_PRESENT: if (!match_omit(legacy)) return; break; default: return; } TTCN_error("Restriction `%s' on template of type %s violated.", get_res_name(t_res), t_name ? t_name : "@RANAP-IEs.AreaIdentity"); } } /* end of namespace */