| // This C++ source file was generated by the TTCN-3 compiler |
| // of the TTCN-3 Test Executor version CRL 113 200/6 R6A |
| // for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019 |
| |
| // Copyright (c) 2000-2019 Ericsson Telecom AB |
| |
| // Do not edit this file unless you know what you are doing. |
| |
| /* Including header files */ |
| |
| #include "IsobusNMMessageTypes.hh" |
| |
| namespace IsobusNMMessageTypes { |
| |
| /* Prototypes of static functions */ |
| |
| static void pre_init_module(); |
| static void post_init_module(); |
| |
| /* Literal string constants */ |
| |
| static const unsigned char module_checksum[] = { 0xce, 0xbe, 0x6c, 0x08, 0xb0, 0x7a, 0xe6, 0x65, 0xa6, 0xe3, 0xd8, 0x5d, 0x42, 0xed, 0xc8, 0x2f }; |
| |
| /* Global variable definitions */ |
| |
| const XERdescriptor_t DestinationAddress_xer_ = { {"DestinationAddress>\n", "DestinationAddress>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int DestinationAddress_oer_ext_arr_[0] = {}; |
| const int DestinationAddress_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t DestinationAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DestinationAddress_oer_ext_arr_, 0, DestinationAddress_oer_p_}; |
| const TTCN_Typedescriptor_t DestinationAddress_descr_ = { "@IsobusNMMessageTypes.DestinationAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DestinationAddress_xer_, &OCTETSTRING_json_, &DestinationAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t PDUFormat_xer_ = { {"PDUFormat>\n", "PDUFormat>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int PDUFormat_oer_ext_arr_[0] = {}; |
| const int PDUFormat_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t PDUFormat_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDUFormat_oer_ext_arr_, 0, PDUFormat_oer_p_}; |
| const TTCN_Typedescriptor_t PDUFormat_descr_ = { "@IsobusNMMessageTypes.PDUFormat", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDUFormat_xer_, &OCTETSTRING_json_, &PDUFormat_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t SourceAddress_xer_ = { {"SourceAddress>\n", "SourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int SourceAddress_oer_ext_arr_[0] = {}; |
| const int SourceAddress_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t SourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SourceAddress_oer_ext_arr_, 0, SourceAddress_oer_p_}; |
| const TTCN_Typedescriptor_t SourceAddress_descr_ = { "@IsobusNMMessageTypes.SourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SourceAddress_xer_, &OCTETSTRING_json_, &SourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t Priority_raw_ = {6,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t Priority_xer_ = { {"Priority>\n", "Priority>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t Priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t Priority_descr_ = { "@IsobusNMMessageTypes.Priority", &BITSTRING_ber_, &Priority_raw_, NULL, &Priority_xer_, &BITSTRING_json_, &Priority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t SelfConfigurableAddressBits_xer_ = { {"SelfConfigurableAddressBits>\n", "SelfConfigurableAddressBits>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t SelfConfigurableAddressBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t SelfConfigurableAddressBits_descr_ = { "@IsobusNMMessageTypes.SelfConfigurableAddressBits", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SelfConfigurableAddressBits_xer_, &BITSTRING_json_, &SelfConfigurableAddressBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t IndustryGroupBits_xer_ = { {"IndustryGroupBits>\n", "IndustryGroupBits>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t IndustryGroupBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t IndustryGroupBits_descr_ = { "@IsobusNMMessageTypes.IndustryGroupBits", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &IndustryGroupBits_xer_, &BITSTRING_json_, &IndustryGroupBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t DeviceClassInstanceBits_xer_ = { {"DeviceClassInstanceBits>\n", "DeviceClassInstanceBits>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t DeviceClassInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t DeviceClassInstanceBits_descr_ = { "@IsobusNMMessageTypes.DeviceClassInstanceBits", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &DeviceClassInstanceBits_xer_, &BITSTRING_json_, &DeviceClassInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t DeviceClassBits_xer_ = { {"DeviceClassBits>\n", "DeviceClassBits>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t DeviceClassBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t DeviceClassBits_descr_ = { "@IsobusNMMessageTypes.DeviceClassBits", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &DeviceClassBits_xer_, &BITSTRING_json_, &DeviceClassBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t ReservedBits_xer_ = { {"ReservedBits>\n", "ReservedBits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t ReservedBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t ReservedBits_descr_ = { "@IsobusNMMessageTypes.ReservedBits", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ReservedBits_xer_, &BITSTRING_json_, &ReservedBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t FunctionBits_xer_ = { {"FunctionBits>\n", "FunctionBits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t FunctionBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t FunctionBits_descr_ = { "@IsobusNMMessageTypes.FunctionBits", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, &FunctionBits_xer_, &BITSTRING_json_, &FunctionBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t FunctionInstanceBits_xer_ = { {"FunctionInstanceBits>\n", "FunctionInstanceBits>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t FunctionInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t FunctionInstanceBits_descr_ = { "@IsobusNMMessageTypes.FunctionInstanceBits", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &FunctionInstanceBits_xer_, &BITSTRING_json_, &FunctionInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t ECUInstanceBits_xer_ = { {"ECUInstanceBits>\n", "ECUInstanceBits>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t ECUInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t ECUInstanceBits_descr_ = { "@IsobusNMMessageTypes.ECUInstanceBits", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ECUInstanceBits_xer_, &BITSTRING_json_, &ECUInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t ManufacturerCodeBits_xer_ = { {"ManufacturerCodeBits>\n", "ManufacturerCodeBits>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t ManufacturerCodeBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t ManufacturerCodeBits_descr_ = { "@IsobusNMMessageTypes.ManufacturerCodeBits", &BITSTRING_ber_, &General__Types::BIT11_raw_, NULL, &ManufacturerCodeBits_xer_, &BITSTRING_json_, &ManufacturerCodeBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t IdentityNumberBits_xer_ = { {"IdentityNumberBits>\n", "IdentityNumberBits>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t IdentityNumberBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t IdentityNumberBits_descr_ = { "@IsobusNMMessageTypes.IdentityNumberBits", &BITSTRING_ber_, &IsobusMessageTypes::BIT21_raw_, NULL, &IdentityNumberBits_xer_, &BITSTRING_json_, &IdentityNumberBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_selfConfigurableAddressValue_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_selfConfigurableAddressValue_xer_ = { {"selfConfigurableAddressValue>\n", "selfConfigurableAddressValue>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_selfConfigurableAddressValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_selfConfigurableAddressValue_descr_ = { "@IsobusNMMessageTypes.NAME.selfConfigurableAddressValue", &BITSTRING_ber_, &NAME_selfConfigurableAddressValue_raw_, NULL, &NAME_selfConfigurableAddressValue_xer_, &BITSTRING_json_, &NAME_selfConfigurableAddressValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_industryGroupValue_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_industryGroupValue_xer_ = { {"industryGroupValue>\n", "industryGroupValue>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_industryGroupValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_industryGroupValue_descr_ = { "@IsobusNMMessageTypes.NAME.industryGroupValue", &BITSTRING_ber_, &NAME_industryGroupValue_raw_, NULL, &NAME_industryGroupValue_xer_, &BITSTRING_json_, &NAME_industryGroupValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_deviceClassInstanceValue_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_deviceClassInstanceValue_xer_ = { {"deviceClassInstanceValue>\n", "deviceClassInstanceValue>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_deviceClassInstanceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_deviceClassInstanceValue_descr_ = { "@IsobusNMMessageTypes.NAME.deviceClassInstanceValue", &BITSTRING_ber_, &NAME_deviceClassInstanceValue_raw_, NULL, &NAME_deviceClassInstanceValue_xer_, &BITSTRING_json_, &NAME_deviceClassInstanceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_deviceClassValue_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_deviceClassValue_xer_ = { {"deviceClassValue>\n", "deviceClassValue>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_deviceClassValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_deviceClassValue_descr_ = { "@IsobusNMMessageTypes.NAME.deviceClassValue", &BITSTRING_ber_, &NAME_deviceClassValue_raw_, NULL, &NAME_deviceClassValue_xer_, &BITSTRING_json_, &NAME_deviceClassValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_reserveValued_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_reserveValued_xer_ = { {"reserveValued>\n", "reserveValued>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_reserveValued_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_reserveValued_descr_ = { "@IsobusNMMessageTypes.NAME.reserveValued", &BITSTRING_ber_, &NAME_reserveValued_raw_, NULL, &NAME_reserveValued_xer_, &BITSTRING_json_, &NAME_reserveValued_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_functionValue_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,8,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_functionValue_xer_ = { {"functionValue>\n", "functionValue>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_functionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_functionValue_descr_ = { "@IsobusNMMessageTypes.NAME.functionValue", &BITSTRING_ber_, &NAME_functionValue_raw_, NULL, &NAME_functionValue_xer_, &BITSTRING_json_, &NAME_functionValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_functionInstanceValue_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_functionInstanceValue_xer_ = { {"functionInstanceValue>\n", "functionInstanceValue>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_functionInstanceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_functionInstanceValue_descr_ = { "@IsobusNMMessageTypes.NAME.functionInstanceValue", &BITSTRING_ber_, &NAME_functionInstanceValue_raw_, NULL, &NAME_functionInstanceValue_xer_, &BITSTRING_json_, &NAME_functionInstanceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_ecuInstancceValue_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_ecuInstancceValue_xer_ = { {"ecuInstancceValue>\n", "ecuInstancceValue>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_ecuInstancceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_ecuInstancceValue_descr_ = { "@IsobusNMMessageTypes.NAME.ecuInstancceValue", &BITSTRING_ber_, &NAME_ecuInstancceValue_raw_, NULL, &NAME_ecuInstancceValue_xer_, &BITSTRING_json_, &NAME_ecuInstancceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_manufacturerCodeValue_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_manufacturerCodeValue_xer_ = { {"manufacturerCodeValue>\n", "manufacturerCodeValue>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_manufacturerCodeValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_manufacturerCodeValue_descr_ = { "@IsobusNMMessageTypes.NAME.manufacturerCodeValue", &BITSTRING_ber_, &NAME_manufacturerCodeValue_raw_, NULL, &NAME_manufacturerCodeValue_xer_, &BITSTRING_json_, &NAME_manufacturerCodeValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_identityNumberBits_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t NAME_identityNumberBits_xer_ = { {"identityNumberBits>\n", "identityNumberBits>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t NAME_identityNumberBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t NAME_identityNumberBits_descr_ = { "@IsobusNMMessageTypes.NAME.identityNumberBits", &BITSTRING_ber_, &NAME_identityNumberBits_raw_, NULL, &NAME_identityNumberBits_xer_, &BITSTRING_json_, &NAME_identityNumberBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NAME_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for NAME |
| const TTCN_Typedescriptor_t NAME_descr_ = { "@IsobusNMMessageTypes.NAME", NULL, &NAME_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t CannotClaimSourceAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for CannotClaimSourceAddress |
| const TTCN_Typedescriptor_t CannotClaimSourceAddress_descr_ = { "@IsobusNMMessageTypes.CannotClaimSourceAddress", NULL, &CannotClaimSourceAddress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t AddressClaimed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for AddressClaimed |
| const TTCN_Typedescriptor_t AddressClaimed_descr_ = { "@IsobusNMMessageTypes.AddressClaimed", NULL, &AddressClaimed_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestForAddressClaimed_pgn_xer_ = { {"pgn>\n", "pgn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t RequestForAddressClaimed_pgn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t RequestForAddressClaimed_pgn_descr_ = { "@IsobusNMMessageTypes.RequestForAddressClaimed.pgn", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &RequestForAddressClaimed_pgn_xer_, &INTEGER_json_, &RequestForAddressClaimed_pgn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t RequestForAddressClaimed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for RequestForAddressClaimed |
| const TTCN_Typedescriptor_t RequestForAddressClaimed_descr_ = { "@IsobusNMMessageTypes.RequestForAddressClaimed", NULL, &RequestForAddressClaimed_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t CommandedAddress_newSourceAddress_xer_ = { {"newSourceAddress>\n", "newSourceAddress>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int CommandedAddress_newSourceAddress_oer_ext_arr_[0] = {}; |
| const int CommandedAddress_newSourceAddress_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t CommandedAddress_newSourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CommandedAddress_newSourceAddress_oer_ext_arr_, 0, CommandedAddress_newSourceAddress_oer_p_}; |
| const TTCN_Typedescriptor_t CommandedAddress_newSourceAddress_descr_ = { "@IsobusNMMessageTypes.CommandedAddress.newSourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CommandedAddress_newSourceAddress_xer_, &OCTETSTRING_json_, &CommandedAddress_newSourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t CommandedAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for CommandedAddress |
| const TTCN_Typedescriptor_t CommandedAddress_descr_ = { "@IsobusNMMessageTypes.CommandedAddress", NULL, &CommandedAddress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t Function_xer_ = { {"Function>\n", "Function>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t Function_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t Function_descr_ = { "@IsobusNMMessageTypes.Function", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &Function_xer_, &INTEGER_json_, &Function_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Request_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t e__PortNumber_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,4,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for e__PortNumber |
| const TTCN_Typedescriptor_t e__PortNumber_descr_ = { "@IsobusNMMessageTypes.e_PortNumber", NULL, &e__PortNumber_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t PortPair_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for PortPair |
| const TTCN_Typedescriptor_t PortPair_descr_ = { "@IsobusNMMessageTypes.PortPair", NULL, &PortPair_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved3_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved3_oer_ext_arr_, 0, N__MFDB__Request_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved3", &OCTETSTRING_ber_, &N__MFDB__Request_reserved3_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved3_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved4_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved4_oer_ext_arr_, 0, N__MFDB__Request_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved4", &OCTETSTRING_ber_, &N__MFDB__Request_reserved4_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved4_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved5_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved5_oer_ext_arr_, 0, N__MFDB__Request_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved5", &OCTETSTRING_ber_, &N__MFDB__Request_reserved5_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved5_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved6_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved6_oer_ext_arr_, 0, N__MFDB__Request_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved6", &OCTETSTRING_ber_, &N__MFDB__Request_reserved6_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved6_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved7_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved7_oer_ext_arr_, 0, N__MFDB__Request_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved7", &OCTETSTRING_ber_, &N__MFDB__Request_reserved7_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved7_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Request_reserved8_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Request_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved8_oer_ext_arr_, 0, N__MFDB__Request_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved8", &OCTETSTRING_ber_, &N__MFDB__Request_reserved8_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved8_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Request |
| const TTCN_Typedescriptor_t N__MFDB__Request_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request", NULL, &N__MFDB__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Response_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t e__FilterMode_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for e__FilterMode |
| const TTCN_Typedescriptor_t e__FilterMode_descr_ = { "@IsobusNMMessageTypes.e_FilterMode", NULL, &e__FilterMode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Response_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Response_pgnEntries |
| const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.pgnEntries", NULL, &N__MFDB__Response_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Response_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Response_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Response_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Response_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Response |
| const TTCN_Typedescriptor_t N__MFDB__Response_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response", NULL, &N__MFDB__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Add_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Add_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Add_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Add_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Add_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Add_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Add_pgnEntries |
| const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.pgnEntries", NULL, &N__MFDB__Add_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Add_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Add_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Add_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Add_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Add_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Add |
| const TTCN_Typedescriptor_t N__MFDB__Add_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add", NULL, &N__MFDB__Add_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Delete_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Delete_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Delete_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Delete_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Delete_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Delete_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Delete_pgnEntries |
| const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.pgnEntries", NULL, &N__MFDB__Delete_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Delete_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Delete_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Delete_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Delete_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Delete_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Delete |
| const TTCN_Typedescriptor_t N__MFDB__Delete_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete", NULL, &N__MFDB__Delete_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Clear_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Clear_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Clear_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved3_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved3_oer_ext_arr_, 0, N__MFDB__Clear_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved3_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved3", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved3_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved3_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved4_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved4_oer_ext_arr_, 0, N__MFDB__Clear_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved4", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved4_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved4_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved5_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved5_oer_ext_arr_, 0, N__MFDB__Clear_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved5_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved5", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved5_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved5_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved6_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved6_oer_ext_arr_, 0, N__MFDB__Clear_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved6_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved6", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved6_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved6_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved7_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved7_oer_ext_arr_, 0, N__MFDB__Clear_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved7_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved7", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved7_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved7_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDB__Clear_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDB__Clear_reserved8_oer_ext_arr_[0] = {}; |
| const int N__MFDB__Clear_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDB__Clear_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved8_oer_ext_arr_, 0, N__MFDB__Clear_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDB__Clear_reserved8_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved8", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved8_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved8_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Clear_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Clear |
| const TTCN_Typedescriptor_t N__MFDB__Clear_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear", NULL, &N__MFDB__Clear_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Create__Entry_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Create__Entry_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Create__Entry_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Create__Entry_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Create__Entry_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Create__Entry_pgnEntries |
| const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.pgnEntries", NULL, &N__MFDB__Create__Entry_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDB__Create__Entry_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDB__Create__Entry_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Create__Entry_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Create__Entry_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDB__Create__Entry |
| const TTCN_Typedescriptor_t N__MFDB__Create__Entry_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry", NULL, &N__MFDB__Create__Entry_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t PGNEntry_maxTransferRate_xer_ = { {"maxTransferRate>\n", "maxTransferRate>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t PGNEntry_maxTransferRate_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t PGNEntry_maxTransferRate_descr_ = { "@IsobusNMMessageTypes.PGNEntry.maxTransferRate", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &PGNEntry_maxTransferRate_xer_, &INTEGER_json_, &PGNEntry_maxTransferRate_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t PGNEntry_pgn_xer_ = { {"pgn>\n", "pgn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t PGNEntry_pgn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t PGNEntry_pgn_descr_ = { "@IsobusNMMessageTypes.PGNEntry.pgn", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &PGNEntry_pgn_xer_, &INTEGER_json_, &PGNEntry_pgn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t PGNEntry_nameQualifier_xer_ = { {"nameQualifier>\n", "nameQualifier>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int PGNEntry_nameQualifier_oer_ext_arr_[0] = {}; |
| const int PGNEntry_nameQualifier_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t PGNEntry_nameQualifier_oer_ = { -1, TRUE, 8, FALSE, 0, 0, PGNEntry_nameQualifier_oer_ext_arr_, 0, PGNEntry_nameQualifier_oer_p_}; |
| const TTCN_Typedescriptor_t PGNEntry_nameQualifier_descr_ = { "@IsobusNMMessageTypes.PGNEntry.nameQualifier", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &PGNEntry_nameQualifier_xer_, &OCTETSTRING_json_, &PGNEntry_nameQualifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t PGNEntry_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for PGNEntry |
| const TTCN_Typedescriptor_t PGNEntry_descr_ = { "@IsobusNMMessageTypes.PGNEntry", NULL, &PGNEntry_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__MFDBNQ__Add_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__MFDBNQ__Add_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__MFDBNQ__Add_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDBNQ__Add_msgFunction_xer_, &INTEGER_json_, &N__MFDBNQ__Add_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDBNQ__Add_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__MFDBNQ__Add_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__MFDBNQ__Add_reserved4_oer_ext_arr_[0] = {}; |
| const int N__MFDBNQ__Add_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__MFDBNQ__Add_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDBNQ__Add_reserved4_oer_ext_arr_, 0, N__MFDBNQ__Add_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__MFDBNQ__Add_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.reserved4", &OCTETSTRING_ber_, &N__MFDBNQ__Add_reserved4_raw_, &OCTETSTRING_text_, &N__MFDBNQ__Add_reserved4_xer_, &OCTETSTRING_json_, &N__MFDBNQ__Add_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDBNQ__Add_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDBNQ__Add_pgnEntries |
| const TTCN_Typedescriptor_t N__MFDBNQ__Add_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries", NULL, &N__MFDBNQ__Add_pgnEntries_raw_, NULL, NULL, NULL, NULL, &PGNEntry_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__MFDBNQ__Add_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__MFDBNQ__Add |
| const TTCN_Typedescriptor_t N__MFDBNQ__Add_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add", NULL, &N__MFDBNQ__Add_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__NT__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__NT__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__NT__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NT__Request_msgFunction_xer_, &INTEGER_json_, &N__NT__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t PortNibble_reserved_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t PortNibble_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_Typedescriptor_t PortNibble_reserved_descr_ = { "@IsobusNMMessageTypes.PortNibble.reserved", NULL, &PortNibble_reserved_raw_, NULL, &PortNibble_reserved_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t PortNibble_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for PortNibble |
| const TTCN_Typedescriptor_t PortNibble_descr_ = { "@IsobusNMMessageTypes.PortNibble", NULL, &PortNibble_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved3_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved3_oer_ext_arr_, 0, N__NT__Request_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved3", &OCTETSTRING_ber_, &N__NT__Request_reserved3_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved3_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved4_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved4_oer_ext_arr_, 0, N__NT__Request_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved4", &OCTETSTRING_ber_, &N__NT__Request_reserved4_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved4_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved5_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved5_oer_ext_arr_, 0, N__NT__Request_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved5", &OCTETSTRING_ber_, &N__NT__Request_reserved5_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved5_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved6_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved6_oer_ext_arr_, 0, N__NT__Request_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved6", &OCTETSTRING_ber_, &N__NT__Request_reserved6_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved6_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved7_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved7_oer_ext_arr_, 0, N__NT__Request_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved7", &OCTETSTRING_ber_, &N__NT__Request_reserved7_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved7_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NT__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Request_reserved8_oer_ext_arr_[0] = {}; |
| const int N__NT__Request_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved8_oer_ext_arr_, 0, N__NT__Request_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved8", &OCTETSTRING_ber_, &N__NT__Request_reserved8_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved8_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NT__Request |
| const TTCN_Typedescriptor_t N__NT__Request_descr_ = { "@IsobusNMMessageTypes.N_NT_Request", NULL, &N__NT__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__NT__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__NT__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__NT__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NT__Response_msgFunction_xer_, &INTEGER_json_, &N__NT__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Response_SourceAddressEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NT__Response_SourceAddressEntries |
| const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.SourceAddressEntries", NULL, &N__NT__Response_SourceAddressEntries_raw_, NULL, NULL, NULL, NULL, &SourceAddress_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__NT__Response_SourceAddressEntries_0_xer_ = { {"SourceAddress>\n", "SourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NT__Response_SourceAddressEntries_0_oer_ext_arr_[0] = {}; |
| const int N__NT__Response_SourceAddressEntries_0_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NT__Response_SourceAddressEntries_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Response_SourceAddressEntries_0_oer_ext_arr_, 0, N__NT__Response_SourceAddressEntries_0_oer_p_}; |
| const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_0_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.SourceAddressEntries.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__NT__Response_SourceAddressEntries_0_xer_, &OCTETSTRING_json_, &N__NT__Response_SourceAddressEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NT__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NT__Response |
| const TTCN_Typedescriptor_t N__NT__Response_descr_ = { "@IsobusNMMessageTypes.N_NT_Response", NULL, &N__NT__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__NTX__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__NTX__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__NTX__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NTX__Request_msgFunction_xer_, &INTEGER_json_, &N__NTX__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved3_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved3_oer_ext_arr_, 0, N__NTX__Request_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved3", &OCTETSTRING_ber_, &N__NTX__Request_reserved3_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved3_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved4_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved4_oer_ext_arr_, 0, N__NTX__Request_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved4", &OCTETSTRING_ber_, &N__NTX__Request_reserved4_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved4_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved5_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved5_oer_ext_arr_, 0, N__NTX__Request_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved5", &OCTETSTRING_ber_, &N__NTX__Request_reserved5_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved5_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved6_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved6_oer_ext_arr_, 0, N__NTX__Request_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved6", &OCTETSTRING_ber_, &N__NTX__Request_reserved6_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved6_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved7_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved7_oer_ext_arr_, 0, N__NTX__Request_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved7", &OCTETSTRING_ber_, &N__NTX__Request_reserved7_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved7_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__NTX__Request_reserved8_oer_ext_arr_[0] = {}; |
| const int N__NTX__Request_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__NTX__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved8_oer_ext_arr_, 0, N__NTX__Request_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__NTX__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved8", &OCTETSTRING_ber_, &N__NTX__Request_reserved8_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved8_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NTX__Request |
| const TTCN_Typedescriptor_t N__NTX__Request_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request", NULL, &N__NTX__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t SA__NAME__pair_sourceAddress_xer_ = { {"sourceAddress>\n", "sourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int SA__NAME__pair_sourceAddress_oer_ext_arr_[0] = {}; |
| const int SA__NAME__pair_sourceAddress_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t SA__NAME__pair_sourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SA__NAME__pair_sourceAddress_oer_ext_arr_, 0, SA__NAME__pair_sourceAddress_oer_p_}; |
| const TTCN_Typedescriptor_t SA__NAME__pair_sourceAddress_descr_ = { "@IsobusNMMessageTypes.SA_NAME_pair.sourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SA__NAME__pair_sourceAddress_xer_, &OCTETSTRING_json_, &SA__NAME__pair_sourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t SA__NAME__pair_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for SA__NAME__pair |
| const TTCN_Typedescriptor_t SA__NAME__pair_descr_ = { "@IsobusNMMessageTypes.SA_NAME_pair", NULL, &SA__NAME__pair_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__NTX__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__NTX__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__NTX__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NTX__Response_msgFunction_xer_, &INTEGER_json_, &N__NTX__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Response_numberOfReportedPorts_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,-1,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__NTX__Response_numberOfReportedPorts_xer_ = { {"numberOfReportedPorts>\n", "numberOfReportedPorts>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__NTX__Response_numberOfReportedPorts_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__NTX__Response_numberOfReportedPorts_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.numberOfReportedPorts", &INTEGER_ber_, &N__NTX__Response_numberOfReportedPorts_raw_, &INTEGER_text_, &N__NTX__Response_numberOfReportedPorts_xer_, &INTEGER_json_, &N__NTX__Response_numberOfReportedPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NTX__Response_sourceaddress__NAME__pairs |
| const TTCN_Typedescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs", NULL, &N__NTX__Response_sourceaddress__NAME__pairs_raw_, NULL, NULL, NULL, NULL, &SA__NAME__pair_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__NTX__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__NTX__Response |
| const TTCN_Typedescriptor_t N__NTX__Response_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response", NULL, &N__NTX__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t e__ParametricIdentifier_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for e__ParametricIdentifier |
| const TTCN_Typedescriptor_t e__ParametricIdentifier_descr_ = { "@IsobusNMMessageTypes.e_ParametricIdentifier", NULL, &e__ParametricIdentifier_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__GP__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__GP__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__GP__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Request_msgFunction_xer_, &INTEGER_json_, &N__GP__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Request_parametricIdentifiers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__GP__Request_parametricIdentifiers |
| const TTCN_Typedescriptor_t N__GP__Request_parametricIdentifiers_descr_ = { "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers", NULL, &N__GP__Request_parametricIdentifiers_raw_, NULL, NULL, NULL, NULL, &e__ParametricIdentifier_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__GP__Request |
| const TTCN_Typedescriptor_t N__GP__Request_descr_ = { "@IsobusNMMessageTypes.N_GP_Request", NULL, &N__GP__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t Buffersize_xer_ = { {"Buffersize>\n", "Buffersize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int Buffersize_oer_ext_arr_[0] = {}; |
| const int Buffersize_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t Buffersize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Buffersize_oer_ext_arr_, 0, Buffersize_oer_p_}; |
| const TTCN_Typedescriptor_t Buffersize_descr_ = { "@IsobusNMMessageTypes.Buffersize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Buffersize_xer_, &OCTETSTRING_json_, &Buffersize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t MaximumFilterDatabaseSize_xer_ = { {"MaximumFilterDatabaseSize>\n", "MaximumFilterDatabaseSize>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int MaximumFilterDatabaseSize_oer_ext_arr_[0] = {}; |
| const int MaximumFilterDatabaseSize_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t MaximumFilterDatabaseSize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumFilterDatabaseSize_oer_ext_arr_, 0, MaximumFilterDatabaseSize_oer_p_}; |
| const TTCN_Typedescriptor_t MaximumFilterDatabaseSize_descr_ = { "@IsobusNMMessageTypes.MaximumFilterDatabaseSize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumFilterDatabaseSize_xer_, &OCTETSTRING_json_, &MaximumFilterDatabaseSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t NumberOfFilterDatabaseEntries_xer_ = { {"NumberOfFilterDatabaseEntries>\n", "NumberOfFilterDatabaseEntries>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int NumberOfFilterDatabaseEntries_oer_ext_arr_[0] = {}; |
| const int NumberOfFilterDatabaseEntries_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t NumberOfFilterDatabaseEntries_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfFilterDatabaseEntries_oer_ext_arr_, 0, NumberOfFilterDatabaseEntries_oer_p_}; |
| const TTCN_Typedescriptor_t NumberOfFilterDatabaseEntries_descr_ = { "@IsobusNMMessageTypes.NumberOfFilterDatabaseEntries", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfFilterDatabaseEntries_xer_, &OCTETSTRING_json_, &NumberOfFilterDatabaseEntries_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t MaximumNumberOfMessagesReceivedPerSecond_xer_ = { {"MaximumNumberOfMessagesReceivedPerSecond>\n", "MaximumNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int MaximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {}; |
| const int MaximumNumberOfMessagesReceivedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t MaximumNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesReceivedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t MaximumNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t MaximumNumberOfMessagesForwardedPerSecond_xer_ = { {"MaximumNumberOfMessagesForwardedPerSecond>\n", "MaximumNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int MaximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {}; |
| const int MaximumNumberOfMessagesForwardedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t MaximumNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesForwardedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t MaximumNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t MaximumNumberOfMessagesFilteredPerSecond_xer_ = { {"MaximumNumberOfMessagesFilteredPerSecond>\n", "MaximumNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int MaximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {}; |
| const int MaximumNumberOfMessagesFilteredPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t MaximumNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesFilteredPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t MaximumNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t MaximumTransitDelayTime__ms_xer_ = { {"MaximumTransitDelayTime_ms>\n", "MaximumTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int MaximumTransitDelayTime__ms_oer_ext_arr_[0] = {}; |
| const int MaximumTransitDelayTime__ms_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t MaximumTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumTransitDelayTime__ms_oer_ext_arr_, 0, MaximumTransitDelayTime__ms_oer_p_}; |
| const TTCN_Typedescriptor_t MaximumTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.MaximumTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &MaximumTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t AverageTransitDelayTime__ms_xer_ = { {"AverageTransitDelayTime_ms>\n", "AverageTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int AverageTransitDelayTime__ms_oer_ext_arr_[0] = {}; |
| const int AverageTransitDelayTime__ms_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t AverageTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageTransitDelayTime__ms_oer_ext_arr_, 0, AverageTransitDelayTime__ms_oer_p_}; |
| const TTCN_Typedescriptor_t AverageTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.AverageTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &AverageTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t NumberOfMessagesLostDueToBufferOverflow_xer_ = { {"NumberOfMessagesLostDueToBufferOverflow>\n", "NumberOfMessagesLostDueToBufferOverflow>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int NumberOfMessagesLostDueToBufferOverflow_oer_ext_arr_[0] = {}; |
| const int NumberOfMessagesLostDueToBufferOverflow_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t NumberOfMessagesLostDueToBufferOverflow_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfMessagesLostDueToBufferOverflow_oer_ext_arr_, 0, NumberOfMessagesLostDueToBufferOverflow_oer_p_}; |
| const TTCN_Typedescriptor_t NumberOfMessagesLostDueToBufferOverflow_descr_ = { "@IsobusNMMessageTypes.NumberOfMessagesLostDueToBufferOverflow", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfMessagesLostDueToBufferOverflow_xer_, &OCTETSTRING_json_, &NumberOfMessagesLostDueToBufferOverflow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t NumberOfMessagesWithExcessTransitDelayTime_xer_ = { {"NumberOfMessagesWithExcessTransitDelayTime>\n", "NumberOfMessagesWithExcessTransitDelayTime>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int NumberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_[0] = {}; |
| const int NumberOfMessagesWithExcessTransitDelayTime_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t NumberOfMessagesWithExcessTransitDelayTime_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_, 0, NumberOfMessagesWithExcessTransitDelayTime_oer_p_}; |
| const TTCN_Typedescriptor_t NumberOfMessagesWithExcessTransitDelayTime_descr_ = { "@IsobusNMMessageTypes.NumberOfMessagesWithExcessTransitDelayTime", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfMessagesWithExcessTransitDelayTime_xer_, &OCTETSTRING_json_, &NumberOfMessagesWithExcessTransitDelayTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t AverageNumberOfMessagesReceivedPerSecond_xer_ = { {"AverageNumberOfMessagesReceivedPerSecond>\n", "AverageNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int AverageNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {}; |
| const int AverageNumberOfMessagesReceivedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t AverageNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesReceivedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t AverageNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t AverageNumberOfMessagesForwardedPerSecond_xer_ = { {"AverageNumberOfMessagesForwardedPerSecond>\n", "AverageNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int AverageNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {}; |
| const int AverageNumberOfMessagesForwardedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t AverageNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesForwardedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t AverageNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t AverageNumberOfMessagesFilteredPerSecond_xer_ = { {"AverageNumberOfMessagesFilteredPerSecond>\n", "AverageNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int AverageNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {}; |
| const int AverageNumberOfMessagesFilteredPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t AverageNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesFilteredPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t AverageNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t UptimeSinceLastPowerOnReset__s_xer_ = { {"UptimeSinceLastPowerOnReset_s>\n", "UptimeSinceLastPowerOnReset_s>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int UptimeSinceLastPowerOnReset__s_oer_ext_arr_[0] = {}; |
| const int UptimeSinceLastPowerOnReset__s_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t UptimeSinceLastPowerOnReset__s_oer_ = { -1, TRUE, 4, FALSE, 0, 0, UptimeSinceLastPowerOnReset__s_oer_ext_arr_, 0, UptimeSinceLastPowerOnReset__s_oer_p_}; |
| const TTCN_Typedescriptor_t UptimeSinceLastPowerOnReset__s_descr_ = { "@IsobusNMMessageTypes.UptimeSinceLastPowerOnReset_s", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &UptimeSinceLastPowerOnReset__s_xer_, &OCTETSTRING_json_, &UptimeSinceLastPowerOnReset__s_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t NumberOfPorts_xer_ = { {"NumberOfPorts>\n", "NumberOfPorts>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int NumberOfPorts_oer_ext_arr_[0] = {}; |
| const int NumberOfPorts_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t NumberOfPorts_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NumberOfPorts_oer_ext_arr_, 0, NumberOfPorts_oer_p_}; |
| const TTCN_Typedescriptor_t NumberOfPorts_descr_ = { "@IsobusNMMessageTypes.NumberOfPorts", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NumberOfPorts_xer_, &OCTETSTRING_json_, &NumberOfPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t NetworkInterconnectionUnitType_xer_ = { {"NetworkInterconnectionUnitType>\n", "NetworkInterconnectionUnitType>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int NetworkInterconnectionUnitType_oer_ext_arr_[0] = {}; |
| const int NetworkInterconnectionUnitType_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t NetworkInterconnectionUnitType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NetworkInterconnectionUnitType_oer_ext_arr_, 0, NetworkInterconnectionUnitType_oer_p_}; |
| const TTCN_Typedescriptor_t NetworkInterconnectionUnitType_descr_ = { "@IsobusNMMessageTypes.NetworkInterconnectionUnitType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NetworkInterconnectionUnitType_xer_, &OCTETSTRING_json_, &NetworkInterconnectionUnitType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t Reserved_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t Reserved_xer_ = { {"Reserved>\n", "Reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int Reserved_oer_ext_arr_[0] = {}; |
| const int Reserved_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t Reserved_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Reserved_oer_ext_arr_, 0, Reserved_oer_p_}; |
| const TTCN_Typedescriptor_t Reserved_descr_ = { "@IsobusNMMessageTypes.Reserved", &OCTETSTRING_ber_, &Reserved_raw_, &OCTETSTRING_text_, &Reserved_xer_, &OCTETSTRING_json_, &Reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t RequestedParametric_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for RequestedParametric |
| const TTCN_Typedescriptor_t RequestedParametric_descr_ = { "@IsobusNMMessageTypes.RequestedParametric", NULL, &RequestedParametric_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_buffersize_xer_ = { {"buffersize>\n", "buffersize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_buffersize_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_buffersize_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_buffersize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_buffersize_oer_ext_arr_, 0, RequestedParametric_buffersize_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_buffersize_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.buffersize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_buffersize_xer_, &OCTETSTRING_json_, &RequestedParametric_buffersize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_maximumFilterDatabaseSize_xer_ = { {"maximumFilterDatabaseSize>\n", "maximumFilterDatabaseSize>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_maximumFilterDatabaseSize_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_maximumFilterDatabaseSize_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_maximumFilterDatabaseSize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumFilterDatabaseSize_oer_ext_arr_, 0, RequestedParametric_maximumFilterDatabaseSize_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_maximumFilterDatabaseSize_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumFilterDatabaseSize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumFilterDatabaseSize_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumFilterDatabaseSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_xer_ = { {"numberOfFilterDatabaseEntries>\n", "numberOfFilterDatabaseEntries>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_numberOfFilterDatabaseEntries_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_numberOfFilterDatabaseEntries_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfFilterDatabaseEntries_oer_ext_arr_, 0, RequestedParametric_numberOfFilterDatabaseEntries_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfFilterDatabaseEntries", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfFilterDatabaseEntries_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfFilterDatabaseEntries_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_xer_ = { {"maximumNumberOfMessagesReceivedPerSecond>\n", "maximumNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_xer_ = { {"maximumNumberOfMessagesForwardedPerSecond>\n", "maximumNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_xer_ = { {"maximumNumberOfMessagesFilteredPerSecond>\n", "maximumNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_maximumTransitDelayTime__ms_xer_ = { {"maximumTransitDelayTime_ms>\n", "maximumTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_maximumTransitDelayTime__ms_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_maximumTransitDelayTime__ms_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_maximumTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumTransitDelayTime__ms_oer_ext_arr_, 0, RequestedParametric_maximumTransitDelayTime__ms_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_maximumTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_averageTransitDelayTime__ms_xer_ = { {"averageTransitDelayTime_ms>\n", "averageTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_averageTransitDelayTime__ms_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_averageTransitDelayTime__ms_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_averageTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageTransitDelayTime__ms_oer_ext_arr_, 0, RequestedParametric_averageTransitDelayTime__ms_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_averageTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &RequestedParametric_averageTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_xer_ = { {"numberOfMessagesLostDueToBufferOverflow>\n", "numberOfMessagesLostDueToBufferOverflow>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ext_arr_, 0, RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfMessagesLostDueToBufferOverflow", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfMessagesLostDueToBufferOverflow_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_xer_ = { {"numberOfMessagesWithExcessTransitDelayTime>\n", "numberOfMessagesWithExcessTransitDelayTime>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_, 0, RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfMessagesWithExcessTransitDelayTime", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_xer_ = { {"averageNumberOfMessagesReceivedPerSecond>\n", "averageNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_xer_ = { {"averageNumberOfMessagesForwardedPerSecond>\n", "averageNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_xer_ = { {"averageNumberOfMessagesFilteredPerSecond>\n", "averageNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_xer_ = { {"uptimeSinceLastPowerOnReset_s>\n", "uptimeSinceLastPowerOnReset_s>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ = { -1, TRUE, 4, FALSE, 0, 0, RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ext_arr_, 0, RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.uptimeSinceLastPowerOnReset_s", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &RequestedParametric_uptimeSinceLastPowerOnReset__s_xer_, &OCTETSTRING_json_, &RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_numberOfPorts_xer_ = { {"numberOfPorts>\n", "numberOfPorts>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_numberOfPorts_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_numberOfPorts_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_numberOfPorts_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_numberOfPorts_oer_ext_arr_, 0, RequestedParametric_numberOfPorts_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_numberOfPorts_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfPorts", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfPorts_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_networkInterconnectionUnitType_xer_ = { {"networkInterconnectionUnitType>\n", "networkInterconnectionUnitType>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_networkInterconnectionUnitType_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_networkInterconnectionUnitType_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_networkInterconnectionUnitType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_networkInterconnectionUnitType_oer_ext_arr_, 0, RequestedParametric_networkInterconnectionUnitType_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_networkInterconnectionUnitType_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.networkInterconnectionUnitType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RequestedParametric_networkInterconnectionUnitType_xer_, &OCTETSTRING_json_, &RequestedParametric_networkInterconnectionUnitType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t RequestedParametric_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int RequestedParametric_reserved_oer_ext_arr_[0] = {}; |
| const int RequestedParametric_reserved_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t RequestedParametric_reserved_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_reserved_oer_ext_arr_, 0, RequestedParametric_reserved_oer_p_}; |
| const TTCN_Typedescriptor_t RequestedParametric_reserved_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.reserved", &OCTETSTRING_ber_, &Reserved_raw_, &OCTETSTRING_text_, &RequestedParametric_reserved_xer_, &OCTETSTRING_json_, &RequestedParametric_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__GP__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__GP__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__GP__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Response_msgFunction_xer_, &INTEGER_json_, &N__GP__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Response_requestedParametrics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__GP__Response_requestedParametrics |
| const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.requestedParametrics", NULL, &N__GP__Response_requestedParametrics_raw_, NULL, NULL, NULL, NULL, &General__Types::OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__GP__Response_requestedParametrics_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Response_requestedParametrics_0_oer_ext_arr_[0] = {}; |
| const int N__GP__Response_requestedParametrics_0_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Response_requestedParametrics_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Response_requestedParametrics_0_oer_ext_arr_, 0, N__GP__Response_requestedParametrics_0_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_0_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.requestedParametrics.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__GP__Response_requestedParametrics_0_xer_, &OCTETSTRING_json_, &N__GP__Response_requestedParametrics_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__GP__Response |
| const TTCN_Typedescriptor_t N__GP__Response_descr_ = { "@IsobusNMMessageTypes.N_GP_Response", NULL, &N__GP__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__GP__Reset__Statistics_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Reset__Statistics_msgFunction_xer_, &INTEGER_json_, &N__GP__Reset__Statistics_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved3_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved3_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved3_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved3", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved3_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved3_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved4_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved4_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved4_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved4", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved4_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved4_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved5_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved5_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved5_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved5", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved5_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved5_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved6_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved6_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved6_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved6", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved6_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved6_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved7_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved7_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved7_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved7", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved7_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved7_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__GP__Reset__Statistics_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__GP__Reset__Statistics_reserved8_oer_ext_arr_[0] = {}; |
| const int N__GP__Reset__Statistics_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved8_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved8_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved8", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved8_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved8_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__GP__Reset__Statistics |
| const TTCN_Typedescriptor_t N__GP__Reset__Statistics_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics", NULL, &N__GP__Reset__Statistics_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__SP__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__SP__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__SP__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Request_msgFunction_xer_, &INTEGER_json_, &N__SP__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Request_parametricIdentifiers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__SP__Request_parametricIdentifiers |
| const TTCN_Typedescriptor_t N__SP__Request_parametricIdentifiers_descr_ = { "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers", NULL, &N__SP__Request_parametricIdentifiers_raw_, NULL, NULL, NULL, NULL, &e__ParametricIdentifier_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__SP__Request |
| const TTCN_Typedescriptor_t N__SP__Request_descr_ = { "@IsobusNMMessageTypes.N_SP_Request", NULL, &N__SP__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__SP__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__SP__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__SP__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Response_msgFunction_xer_, &INTEGER_json_, &N__SP__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Response_requestedParametrics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__SP__Response_requestedParametrics |
| const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.requestedParametrics", NULL, &N__SP__Response_requestedParametrics_raw_, NULL, NULL, NULL, NULL, &General__Types::OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__SP__Response_requestedParametrics_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Response_requestedParametrics_0_oer_ext_arr_[0] = {}; |
| const int N__SP__Response_requestedParametrics_0_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Response_requestedParametrics_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Response_requestedParametrics_0_oer_ext_arr_, 0, N__SP__Response_requestedParametrics_0_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_0_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.requestedParametrics.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__SP__Response_requestedParametrics_0_xer_, &OCTETSTRING_json_, &N__SP__Response_requestedParametrics_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__SP__Response |
| const TTCN_Typedescriptor_t N__SP__Response_descr_ = { "@IsobusNMMessageTypes.N_SP_Response", NULL, &N__SP__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__SP__Reset__Statistics_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Reset__Statistics_msgFunction_xer_, &INTEGER_json_, &N__SP__Reset__Statistics_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved3_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved3_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved3_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved3_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved3_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved3_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved3", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved3_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved3_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved4_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved4_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved4_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved4_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved4_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved4_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved4", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved4_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved4_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved5_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved5_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved5_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved5_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved5_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved5_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved5", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved5_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved5_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved6_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved6_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved6_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved6_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved6_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved6_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved6", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved6_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved6_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved7_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved7_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved7_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved7_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved7_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved7_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved7", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved7_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved7_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved8_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| const XERdescriptor_t N__SP__Reset__Statistics_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const int N__SP__Reset__Statistics_reserved8_oer_ext_arr_[0] = {}; |
| const int N__SP__Reset__Statistics_reserved8_oer_p_[0] = {}; |
| const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved8_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved8_oer_p_}; |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved8_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved8", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved8_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved8_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__SP__Reset__Statistics |
| const TTCN_Typedescriptor_t N__SP__Reset__Statistics_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics", NULL, &N__SP__Reset__Statistics_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__OC__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__OC__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__OC__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_OC_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__OC__Request_msgFunction_xer_, &INTEGER_json_, &N__OC__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__OC__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__OC__Request |
| const TTCN_Typedescriptor_t N__OC__Request_descr_ = { "@IsobusNMMessageTypes.N_OC_Request", NULL, &N__OC__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__CC__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__CC__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__CC__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_CC_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__CC__Request_msgFunction_xer_, &INTEGER_json_, &N__CC__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__CC__Request_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__CC__Request |
| const TTCN_Typedescriptor_t N__CC__Request_descr_ = { "@IsobusNMMessageTypes.N_CC_Request", NULL, &N__CC__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t e__Status_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for e__Status |
| const TTCN_Typedescriptor_t e__Status_descr_ = { "@IsobusNMMessageTypes.e_Status", NULL, &e__Status_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t e__FailureReasonCode_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,8,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for e__FailureReasonCode |
| const TTCN_Typedescriptor_t e__FailureReasonCode_descr_ = { "@IsobusNMMessageTypes.e_FailureReasonCode", NULL, &e__FailureReasonCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__OC__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__OC__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__OC__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_OC_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__OC__Response_msgFunction_xer_, &INTEGER_json_, &N__OC__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__OC__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__OC__Response |
| const TTCN_Typedescriptor_t N__OC__Response_descr_ = { "@IsobusNMMessageTypes.N_OC_Response", NULL, &N__OC__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const XERdescriptor_t N__CC__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE, NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE }; |
| const TTCN_OERdescriptor_t N__CC__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL }; |
| const TTCN_Typedescriptor_t N__CC__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_CC_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__CC__Response_msgFunction_xer_, &INTEGER_json_, &N__CC__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t N__CC__Response_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for N__CC__Response |
| const TTCN_Typedescriptor_t N__CC__Response_descr_ = { "@IsobusNMMessageTypes.N_CC_Response", NULL, &N__CC__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| const TTCN_RAWdescriptor_t NetworkMessage_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false}; |
| // No XER for NetworkMessage |
| const TTCN_Typedescriptor_t NetworkMessage_descr_ = { "@IsobusNMMessageTypes.NetworkMessage", NULL, &NetworkMessage_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE }; |
| TTCN_Module module_object("IsobusNMMessageTypes", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, NULL, NULL, NULL, NULL); |
| |
| static const RuntimeVersionChecker ver_checker( current_runtime_version.requires_major_version_6, |
| current_runtime_version.requires_minor_version_6, |
| current_runtime_version.requires_patch_level_0, current_runtime_version.requires_runtime_1); |
| |
| /* Member functions of C++ classes */ |
| |
| NAME::NAME() |
| { |
| } |
| |
| NAME::NAME(const BITSTRING& par_selfConfigurableAddressValue, |
| const BITSTRING& par_industryGroupValue, |
| const BITSTRING& par_deviceClassInstanceValue, |
| const BITSTRING& par_deviceClassValue, |
| const BITSTRING& par_reserveValued, |
| const BITSTRING& par_functionValue, |
| const BITSTRING& par_functionInstanceValue, |
| const BITSTRING& par_ecuInstancceValue, |
| const BITSTRING& par_manufacturerCodeValue, |
| const BITSTRING& par_identityNumberBits) |
| : field_selfConfigurableAddressValue(par_selfConfigurableAddressValue), |
| field_industryGroupValue(par_industryGroupValue), |
| field_deviceClassInstanceValue(par_deviceClassInstanceValue), |
| field_deviceClassValue(par_deviceClassValue), |
| field_reserveValued(par_reserveValued), |
| field_functionValue(par_functionValue), |
| field_functionInstanceValue(par_functionInstanceValue), |
| field_ecuInstancceValue(par_ecuInstancceValue), |
| field_manufacturerCodeValue(par_manufacturerCodeValue), |
| field_identityNumberBits(par_identityNumberBits) |
| { |
| } |
| |
| NAME::NAME(const NAME& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.NAME."); |
| if (other_value.selfConfigurableAddressValue().is_bound()) field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue(); |
| else field_selfConfigurableAddressValue.clean_up(); |
| if (other_value.industryGroupValue().is_bound()) field_industryGroupValue = other_value.industryGroupValue(); |
| else field_industryGroupValue.clean_up(); |
| if (other_value.deviceClassInstanceValue().is_bound()) field_deviceClassInstanceValue = other_value.deviceClassInstanceValue(); |
| else field_deviceClassInstanceValue.clean_up(); |
| if (other_value.deviceClassValue().is_bound()) field_deviceClassValue = other_value.deviceClassValue(); |
| else field_deviceClassValue.clean_up(); |
| if (other_value.reserveValued().is_bound()) field_reserveValued = other_value.reserveValued(); |
| else field_reserveValued.clean_up(); |
| if (other_value.functionValue().is_bound()) field_functionValue = other_value.functionValue(); |
| else field_functionValue.clean_up(); |
| if (other_value.functionInstanceValue().is_bound()) field_functionInstanceValue = other_value.functionInstanceValue(); |
| else field_functionInstanceValue.clean_up(); |
| if (other_value.ecuInstancceValue().is_bound()) field_ecuInstancceValue = other_value.ecuInstancceValue(); |
| else field_ecuInstancceValue.clean_up(); |
| if (other_value.manufacturerCodeValue().is_bound()) field_manufacturerCodeValue = other_value.manufacturerCodeValue(); |
| else field_manufacturerCodeValue.clean_up(); |
| if (other_value.identityNumberBits().is_bound()) field_identityNumberBits = other_value.identityNumberBits(); |
| else field_identityNumberBits.clean_up(); |
| } |
| |
| void NAME::clean_up() |
| { |
| field_selfConfigurableAddressValue.clean_up(); |
| field_industryGroupValue.clean_up(); |
| field_deviceClassInstanceValue.clean_up(); |
| field_deviceClassValue.clean_up(); |
| field_reserveValued.clean_up(); |
| field_functionValue.clean_up(); |
| field_functionInstanceValue.clean_up(); |
| field_ecuInstancceValue.clean_up(); |
| field_manufacturerCodeValue.clean_up(); |
| field_identityNumberBits.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* NAME::get_descriptor() const { return &NAME_descr_; } |
| NAME& NAME::operator=(const NAME& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.NAME."); |
| if (other_value.selfConfigurableAddressValue().is_bound()) field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue(); |
| else field_selfConfigurableAddressValue.clean_up(); |
| if (other_value.industryGroupValue().is_bound()) field_industryGroupValue = other_value.industryGroupValue(); |
| else field_industryGroupValue.clean_up(); |
| if (other_value.deviceClassInstanceValue().is_bound()) field_deviceClassInstanceValue = other_value.deviceClassInstanceValue(); |
| else field_deviceClassInstanceValue.clean_up(); |
| if (other_value.deviceClassValue().is_bound()) field_deviceClassValue = other_value.deviceClassValue(); |
| else field_deviceClassValue.clean_up(); |
| if (other_value.reserveValued().is_bound()) field_reserveValued = other_value.reserveValued(); |
| else field_reserveValued.clean_up(); |
| if (other_value.functionValue().is_bound()) field_functionValue = other_value.functionValue(); |
| else field_functionValue.clean_up(); |
| if (other_value.functionInstanceValue().is_bound()) field_functionInstanceValue = other_value.functionInstanceValue(); |
| else field_functionInstanceValue.clean_up(); |
| if (other_value.ecuInstancceValue().is_bound()) field_ecuInstancceValue = other_value.ecuInstancceValue(); |
| else field_ecuInstancceValue.clean_up(); |
| if (other_value.manufacturerCodeValue().is_bound()) field_manufacturerCodeValue = other_value.manufacturerCodeValue(); |
| else field_manufacturerCodeValue.clean_up(); |
| if (other_value.identityNumberBits().is_bound()) field_identityNumberBits = other_value.identityNumberBits(); |
| else field_identityNumberBits.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean NAME::operator==(const NAME& other_value) const |
| { |
| return field_selfConfigurableAddressValue==other_value.field_selfConfigurableAddressValue |
| && field_industryGroupValue==other_value.field_industryGroupValue |
| && field_deviceClassInstanceValue==other_value.field_deviceClassInstanceValue |
| && field_deviceClassValue==other_value.field_deviceClassValue |
| && field_reserveValued==other_value.field_reserveValued |
| && field_functionValue==other_value.field_functionValue |
| && field_functionInstanceValue==other_value.field_functionInstanceValue |
| && field_ecuInstancceValue==other_value.field_ecuInstancceValue |
| && field_manufacturerCodeValue==other_value.field_manufacturerCodeValue |
| && field_identityNumberBits==other_value.field_identityNumberBits; |
| } |
| |
| boolean NAME::is_bound() const |
| { |
| return (field_selfConfigurableAddressValue.is_bound()) |
| || (field_industryGroupValue.is_bound()) |
| || (field_deviceClassInstanceValue.is_bound()) |
| || (field_deviceClassValue.is_bound()) |
| || (field_reserveValued.is_bound()) |
| || (field_functionValue.is_bound()) |
| || (field_functionInstanceValue.is_bound()) |
| || (field_ecuInstancceValue.is_bound()) |
| || (field_manufacturerCodeValue.is_bound()) |
| || (field_identityNumberBits.is_bound()); |
| } |
| boolean NAME::is_value() const |
| { |
| return field_selfConfigurableAddressValue.is_value() |
| && field_industryGroupValue.is_value() |
| && field_deviceClassInstanceValue.is_value() |
| && field_deviceClassValue.is_value() |
| && field_reserveValued.is_value() |
| && field_functionValue.is_value() |
| && field_functionInstanceValue.is_value() |
| && field_ecuInstancceValue.is_value() |
| && field_manufacturerCodeValue.is_value() |
| && field_identityNumberBits.is_value(); |
| } |
| void NAME::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ selfConfigurableAddressValue := "); |
| field_selfConfigurableAddressValue.log(); |
| TTCN_Logger::log_event_str(", industryGroupValue := "); |
| field_industryGroupValue.log(); |
| TTCN_Logger::log_event_str(", deviceClassInstanceValue := "); |
| field_deviceClassInstanceValue.log(); |
| TTCN_Logger::log_event_str(", deviceClassValue := "); |
| field_deviceClassValue.log(); |
| TTCN_Logger::log_event_str(", reserveValued := "); |
| field_reserveValued.log(); |
| TTCN_Logger::log_event_str(", functionValue := "); |
| field_functionValue.log(); |
| TTCN_Logger::log_event_str(", functionInstanceValue := "); |
| field_functionInstanceValue.log(); |
| TTCN_Logger::log_event_str(", ecuInstancceValue := "); |
| field_ecuInstancceValue.log(); |
| TTCN_Logger::log_event_str(", manufacturerCodeValue := "); |
| field_manufacturerCodeValue.log(); |
| TTCN_Logger::log_event_str(", identityNumberBits := "); |
| field_identityNumberBits.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void NAME::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 (10<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.NAME has 10 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) selfConfigurableAddressValue().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) industryGroupValue().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deviceClassInstanceValue().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) deviceClassValue().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserveValued().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) functionValue().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) functionInstanceValue().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) ecuInstancceValue().set_param(*param.get_elem(7)); |
| if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) manufacturerCodeValue().set_param(*param.get_elem(8)); |
| if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) identityNumberBits().set_param(*param.get_elem(9)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "selfConfigurableAddressValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| selfConfigurableAddressValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "industryGroupValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| industryGroupValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "deviceClassInstanceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| deviceClassInstanceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "deviceClassValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| deviceClassValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserveValued")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserveValued().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "functionValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| functionValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "functionInstanceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| functionInstanceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "ecuInstancceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| ecuInstancceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "manufacturerCodeValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| manufacturerCodeValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "identityNumberBits")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| identityNumberBits().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.NAME: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.NAME"); |
| } |
| } |
| |
| void NAME::set_implicit_omit() |
| { |
| if (selfConfigurableAddressValue().is_bound()) selfConfigurableAddressValue().set_implicit_omit(); |
| if (industryGroupValue().is_bound()) industryGroupValue().set_implicit_omit(); |
| if (deviceClassInstanceValue().is_bound()) deviceClassInstanceValue().set_implicit_omit(); |
| if (deviceClassValue().is_bound()) deviceClassValue().set_implicit_omit(); |
| if (reserveValued().is_bound()) reserveValued().set_implicit_omit(); |
| if (functionValue().is_bound()) functionValue().set_implicit_omit(); |
| if (functionInstanceValue().is_bound()) functionInstanceValue().set_implicit_omit(); |
| if (ecuInstancceValue().is_bound()) ecuInstancceValue().set_implicit_omit(); |
| if (manufacturerCodeValue().is_bound()) manufacturerCodeValue().set_implicit_omit(); |
| if (identityNumberBits().is_bound()) identityNumberBits().set_implicit_omit(); |
| } |
| |
| void NAME::encode_text(Text_Buf& text_buf) const |
| { |
| field_selfConfigurableAddressValue.encode_text(text_buf); |
| field_industryGroupValue.encode_text(text_buf); |
| field_deviceClassInstanceValue.encode_text(text_buf); |
| field_deviceClassValue.encode_text(text_buf); |
| field_reserveValued.encode_text(text_buf); |
| field_functionValue.encode_text(text_buf); |
| field_functionInstanceValue.encode_text(text_buf); |
| field_ecuInstancceValue.encode_text(text_buf); |
| field_manufacturerCodeValue.encode_text(text_buf); |
| field_identityNumberBits.encode_text(text_buf); |
| } |
| |
| void NAME::decode_text(Text_Buf& text_buf) |
| { |
| field_selfConfigurableAddressValue.decode_text(text_buf); |
| field_industryGroupValue.decode_text(text_buf); |
| field_deviceClassInstanceValue.decode_text(text_buf); |
| field_deviceClassValue.decode_text(text_buf); |
| field_reserveValued.decode_text(text_buf); |
| field_functionValue.decode_text(text_buf); |
| field_functionInstanceValue.decode_text(text_buf); |
| field_ecuInstancceValue.decode_text(text_buf); |
| field_manufacturerCodeValue.decode_text(text_buf); |
| field_identityNumberBits.decode_text(text_buf); |
| } |
| |
| void NAME::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void NAME::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int NAME::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, NAME_selfConfigurableAddressValue_descr_.raw->forceomit); |
| decoded_field_length = field_selfConfigurableAddressValue.RAW_decode(NAME_selfConfigurableAddressValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, NAME_industryGroupValue_descr_.raw->forceomit); |
| decoded_field_length = field_industryGroupValue.RAW_decode(NAME_industryGroupValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, NAME_deviceClassInstanceValue_descr_.raw->forceomit); |
| decoded_field_length = field_deviceClassInstanceValue.RAW_decode(NAME_deviceClassInstanceValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, NAME_deviceClassValue_descr_.raw->forceomit); |
| decoded_field_length = field_deviceClassValue.RAW_decode(NAME_deviceClassValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, NAME_reserveValued_descr_.raw->forceomit); |
| decoded_field_length = field_reserveValued.RAW_decode(NAME_reserveValued_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, NAME_functionValue_descr_.raw->forceomit); |
| decoded_field_length = field_functionValue.RAW_decode(NAME_functionValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, NAME_functionInstanceValue_descr_.raw->forceomit); |
| decoded_field_length = field_functionInstanceValue.RAW_decode(NAME_functionInstanceValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, NAME_ecuInstancceValue_descr_.raw->forceomit); |
| decoded_field_length = field_ecuInstancceValue.RAW_decode(NAME_ecuInstancceValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_8_force_omit(8, force_omit, NAME_manufacturerCodeValue_descr_.raw->forceomit); |
| decoded_field_length = field_manufacturerCodeValue.RAW_decode(NAME_manufacturerCodeValue_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_8_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_9_force_omit(9, force_omit, NAME_identityNumberBits_descr_.raw->forceomit); |
| decoded_field_length = field_identityNumberBits.RAW_decode(NAME_identityNumberBits_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_9_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int NAME::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 10; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(10); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_selfConfigurableAddressValue_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NAME_industryGroupValue_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_deviceClassInstanceValue_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, NAME_deviceClassValue_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, NAME_reserveValued_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, NAME_functionValue_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, NAME_functionInstanceValue_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, NAME_ecuInstancceValue_descr_.raw); |
| myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, NAME_manufacturerCodeValue_descr_.raw); |
| myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, NAME_identityNumberBits_descr_.raw); |
| encoded_length += field_selfConfigurableAddressValue.RAW_encode(NAME_selfConfigurableAddressValue_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_industryGroupValue.RAW_encode(NAME_industryGroupValue_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_deviceClassInstanceValue.RAW_encode(NAME_deviceClassInstanceValue_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_deviceClassValue.RAW_encode(NAME_deviceClassValue_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserveValued.RAW_encode(NAME_reserveValued_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_functionValue.RAW_encode(NAME_functionValue_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_functionInstanceValue.RAW_encode(NAME_functionInstanceValue_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_ecuInstancceValue.RAW_encode(NAME_ecuInstancceValue_descr_, *myleaf.body.node.nodes[7]); |
| encoded_length += field_manufacturerCodeValue.RAW_encode(NAME_manufacturerCodeValue_descr_, *myleaf.body.node.nodes[8]); |
| encoded_length += field_identityNumberBits.RAW_encode(NAME_identityNumberBits_descr_, *myleaf.body.node.nodes[9]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct NAME_template::single_value_struct { |
| BITSTRING_template field_selfConfigurableAddressValue; |
| BITSTRING_template field_industryGroupValue; |
| BITSTRING_template field_deviceClassInstanceValue; |
| BITSTRING_template field_deviceClassValue; |
| BITSTRING_template field_reserveValued; |
| BITSTRING_template field_functionValue; |
| BITSTRING_template field_functionInstanceValue; |
| BITSTRING_template field_ecuInstancceValue; |
| BITSTRING_template field_manufacturerCodeValue; |
| BITSTRING_template field_identityNumberBits; |
| }; |
| |
| void NAME_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_selfConfigurableAddressValue = ANY_VALUE; |
| single_value->field_industryGroupValue = ANY_VALUE; |
| single_value->field_deviceClassInstanceValue = ANY_VALUE; |
| single_value->field_deviceClassValue = ANY_VALUE; |
| single_value->field_reserveValued = ANY_VALUE; |
| single_value->field_functionValue = ANY_VALUE; |
| single_value->field_functionInstanceValue = ANY_VALUE; |
| single_value->field_ecuInstancceValue = ANY_VALUE; |
| single_value->field_manufacturerCodeValue = ANY_VALUE; |
| single_value->field_identityNumberBits = ANY_VALUE; |
| } |
| } |
| } |
| |
| void NAME_template::copy_value(const NAME& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.selfConfigurableAddressValue().is_bound()) { |
| single_value->field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue(); |
| } else { |
| single_value->field_selfConfigurableAddressValue.clean_up(); |
| } |
| if (other_value.industryGroupValue().is_bound()) { |
| single_value->field_industryGroupValue = other_value.industryGroupValue(); |
| } else { |
| single_value->field_industryGroupValue.clean_up(); |
| } |
| if (other_value.deviceClassInstanceValue().is_bound()) { |
| single_value->field_deviceClassInstanceValue = other_value.deviceClassInstanceValue(); |
| } else { |
| single_value->field_deviceClassInstanceValue.clean_up(); |
| } |
| if (other_value.deviceClassValue().is_bound()) { |
| single_value->field_deviceClassValue = other_value.deviceClassValue(); |
| } else { |
| single_value->field_deviceClassValue.clean_up(); |
| } |
| if (other_value.reserveValued().is_bound()) { |
| single_value->field_reserveValued = other_value.reserveValued(); |
| } else { |
| single_value->field_reserveValued.clean_up(); |
| } |
| if (other_value.functionValue().is_bound()) { |
| single_value->field_functionValue = other_value.functionValue(); |
| } else { |
| single_value->field_functionValue.clean_up(); |
| } |
| if (other_value.functionInstanceValue().is_bound()) { |
| single_value->field_functionInstanceValue = other_value.functionInstanceValue(); |
| } else { |
| single_value->field_functionInstanceValue.clean_up(); |
| } |
| if (other_value.ecuInstancceValue().is_bound()) { |
| single_value->field_ecuInstancceValue = other_value.ecuInstancceValue(); |
| } else { |
| single_value->field_ecuInstancceValue.clean_up(); |
| } |
| if (other_value.manufacturerCodeValue().is_bound()) { |
| single_value->field_manufacturerCodeValue = other_value.manufacturerCodeValue(); |
| } else { |
| single_value->field_manufacturerCodeValue.clean_up(); |
| } |
| if (other_value.identityNumberBits().is_bound()) { |
| single_value->field_identityNumberBits = other_value.identityNumberBits(); |
| } else { |
| single_value->field_identityNumberBits.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void NAME_template::copy_template(const NAME_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.selfConfigurableAddressValue().get_selection()) { |
| single_value->field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue(); |
| } else { |
| single_value->field_selfConfigurableAddressValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.industryGroupValue().get_selection()) { |
| single_value->field_industryGroupValue = other_value.industryGroupValue(); |
| } else { |
| single_value->field_industryGroupValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.deviceClassInstanceValue().get_selection()) { |
| single_value->field_deviceClassInstanceValue = other_value.deviceClassInstanceValue(); |
| } else { |
| single_value->field_deviceClassInstanceValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.deviceClassValue().get_selection()) { |
| single_value->field_deviceClassValue = other_value.deviceClassValue(); |
| } else { |
| single_value->field_deviceClassValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserveValued().get_selection()) { |
| single_value->field_reserveValued = other_value.reserveValued(); |
| } else { |
| single_value->field_reserveValued.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.functionValue().get_selection()) { |
| single_value->field_functionValue = other_value.functionValue(); |
| } else { |
| single_value->field_functionValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.functionInstanceValue().get_selection()) { |
| single_value->field_functionInstanceValue = other_value.functionInstanceValue(); |
| } else { |
| single_value->field_functionInstanceValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.ecuInstancceValue().get_selection()) { |
| single_value->field_ecuInstancceValue = other_value.ecuInstancceValue(); |
| } else { |
| single_value->field_ecuInstancceValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.manufacturerCodeValue().get_selection()) { |
| single_value->field_manufacturerCodeValue = other_value.manufacturerCodeValue(); |
| } else { |
| single_value->field_manufacturerCodeValue.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.identityNumberBits().get_selection()) { |
| single_value->field_identityNumberBits = other_value.identityNumberBits(); |
| } else { |
| single_value->field_identityNumberBits.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new NAME_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| NAME_template::NAME_template() |
| { |
| } |
| |
| NAME_template::NAME_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| NAME_template::NAME_template(const NAME& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| NAME_template::NAME_template(const OPTIONAL<NAME>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const NAME&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.NAME from an unbound optional field."); |
| } |
| } |
| |
| NAME_template::NAME_template(const NAME_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| NAME_template::~NAME_template() |
| { |
| clean_up(); |
| } |
| |
| NAME_template& NAME_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| NAME_template& NAME_template::operator=(const NAME& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| NAME_template& NAME_template::operator=(const OPTIONAL<NAME>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const NAME&)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 @IsobusNMMessageTypes.NAME."); |
| } |
| return *this; |
| } |
| |
| NAME_template& NAME_template::operator=(const NAME_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean NAME_template::match(const NAME& 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.selfConfigurableAddressValue().is_bound()) return FALSE; |
| if(!single_value->field_selfConfigurableAddressValue.match(other_value.selfConfigurableAddressValue(), legacy))return FALSE; |
| if(!other_value.industryGroupValue().is_bound()) return FALSE; |
| if(!single_value->field_industryGroupValue.match(other_value.industryGroupValue(), legacy))return FALSE; |
| if(!other_value.deviceClassInstanceValue().is_bound()) return FALSE; |
| if(!single_value->field_deviceClassInstanceValue.match(other_value.deviceClassInstanceValue(), legacy))return FALSE; |
| if(!other_value.deviceClassValue().is_bound()) return FALSE; |
| if(!single_value->field_deviceClassValue.match(other_value.deviceClassValue(), legacy))return FALSE; |
| if(!other_value.reserveValued().is_bound()) return FALSE; |
| if(!single_value->field_reserveValued.match(other_value.reserveValued(), legacy))return FALSE; |
| if(!other_value.functionValue().is_bound()) return FALSE; |
| if(!single_value->field_functionValue.match(other_value.functionValue(), legacy))return FALSE; |
| if(!other_value.functionInstanceValue().is_bound()) return FALSE; |
| if(!single_value->field_functionInstanceValue.match(other_value.functionInstanceValue(), legacy))return FALSE; |
| if(!other_value.ecuInstancceValue().is_bound()) return FALSE; |
| if(!single_value->field_ecuInstancceValue.match(other_value.ecuInstancceValue(), legacy))return FALSE; |
| if(!other_value.manufacturerCodeValue().is_bound()) return FALSE; |
| if(!single_value->field_manufacturerCodeValue.match(other_value.manufacturerCodeValue(), legacy))return FALSE; |
| if(!other_value.identityNumberBits().is_bound()) return FALSE; |
| if(!single_value->field_identityNumberBits.match(other_value.identityNumberBits(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME."); |
| } |
| return FALSE; |
| } |
| |
| boolean NAME_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_selfConfigurableAddressValue.is_bound() |
| |
| ||single_value->field_industryGroupValue.is_bound() |
| |
| ||single_value->field_deviceClassInstanceValue.is_bound() |
| |
| ||single_value->field_deviceClassValue.is_bound() |
| |
| ||single_value->field_reserveValued.is_bound() |
| |
| ||single_value->field_functionValue.is_bound() |
| |
| ||single_value->field_functionInstanceValue.is_bound() |
| |
| ||single_value->field_ecuInstancceValue.is_bound() |
| |
| ||single_value->field_manufacturerCodeValue.is_bound() |
| |
| ||single_value->field_identityNumberBits.is_bound() |
| ; |
| } |
| |
| boolean NAME_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_selfConfigurableAddressValue.is_value() |
| &&single_value->field_industryGroupValue.is_value() |
| &&single_value->field_deviceClassInstanceValue.is_value() |
| &&single_value->field_deviceClassValue.is_value() |
| &&single_value->field_reserveValued.is_value() |
| &&single_value->field_functionValue.is_value() |
| &&single_value->field_functionInstanceValue.is_value() |
| &&single_value->field_ecuInstancceValue.is_value() |
| &&single_value->field_manufacturerCodeValue.is_value() |
| &&single_value->field_identityNumberBits.is_value(); |
| } |
| |
| void NAME_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| NAME NAME_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 @IsobusNMMessageTypes.NAME."); |
| NAME ret_val; |
| if (single_value->field_selfConfigurableAddressValue.is_bound()) { |
| ret_val.selfConfigurableAddressValue() = single_value->field_selfConfigurableAddressValue.valueof(); |
| } |
| if (single_value->field_industryGroupValue.is_bound()) { |
| ret_val.industryGroupValue() = single_value->field_industryGroupValue.valueof(); |
| } |
| if (single_value->field_deviceClassInstanceValue.is_bound()) { |
| ret_val.deviceClassInstanceValue() = single_value->field_deviceClassInstanceValue.valueof(); |
| } |
| if (single_value->field_deviceClassValue.is_bound()) { |
| ret_val.deviceClassValue() = single_value->field_deviceClassValue.valueof(); |
| } |
| if (single_value->field_reserveValued.is_bound()) { |
| ret_val.reserveValued() = single_value->field_reserveValued.valueof(); |
| } |
| if (single_value->field_functionValue.is_bound()) { |
| ret_val.functionValue() = single_value->field_functionValue.valueof(); |
| } |
| if (single_value->field_functionInstanceValue.is_bound()) { |
| ret_val.functionInstanceValue() = single_value->field_functionInstanceValue.valueof(); |
| } |
| if (single_value->field_ecuInstancceValue.is_bound()) { |
| ret_val.ecuInstancceValue() = single_value->field_ecuInstancceValue.valueof(); |
| } |
| if (single_value->field_manufacturerCodeValue.is_bound()) { |
| ret_val.manufacturerCodeValue() = single_value->field_manufacturerCodeValue.valueof(); |
| } |
| if (single_value->field_identityNumberBits.is_bound()) { |
| ret_val.identityNumberBits() = single_value->field_identityNumberBits.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void NAME_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.NAME."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new NAME_template[list_length]; |
| } |
| |
| NAME_template& NAME_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.NAME."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.NAME."); |
| return value_list.list_value[list_index]; |
| } |
| |
| BITSTRING_template& NAME_template::selfConfigurableAddressValue() |
| { |
| set_specific(); |
| return single_value->field_selfConfigurableAddressValue; |
| } |
| |
| const BITSTRING_template& NAME_template::selfConfigurableAddressValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field selfConfigurableAddressValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_selfConfigurableAddressValue; |
| } |
| |
| BITSTRING_template& NAME_template::industryGroupValue() |
| { |
| set_specific(); |
| return single_value->field_industryGroupValue; |
| } |
| |
| const BITSTRING_template& NAME_template::industryGroupValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field industryGroupValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_industryGroupValue; |
| } |
| |
| BITSTRING_template& NAME_template::deviceClassInstanceValue() |
| { |
| set_specific(); |
| return single_value->field_deviceClassInstanceValue; |
| } |
| |
| const BITSTRING_template& NAME_template::deviceClassInstanceValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field deviceClassInstanceValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_deviceClassInstanceValue; |
| } |
| |
| BITSTRING_template& NAME_template::deviceClassValue() |
| { |
| set_specific(); |
| return single_value->field_deviceClassValue; |
| } |
| |
| const BITSTRING_template& NAME_template::deviceClassValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field deviceClassValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_deviceClassValue; |
| } |
| |
| BITSTRING_template& NAME_template::reserveValued() |
| { |
| set_specific(); |
| return single_value->field_reserveValued; |
| } |
| |
| const BITSTRING_template& NAME_template::reserveValued() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserveValued of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_reserveValued; |
| } |
| |
| BITSTRING_template& NAME_template::functionValue() |
| { |
| set_specific(); |
| return single_value->field_functionValue; |
| } |
| |
| const BITSTRING_template& NAME_template::functionValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field functionValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_functionValue; |
| } |
| |
| BITSTRING_template& NAME_template::functionInstanceValue() |
| { |
| set_specific(); |
| return single_value->field_functionInstanceValue; |
| } |
| |
| const BITSTRING_template& NAME_template::functionInstanceValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field functionInstanceValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_functionInstanceValue; |
| } |
| |
| BITSTRING_template& NAME_template::ecuInstancceValue() |
| { |
| set_specific(); |
| return single_value->field_ecuInstancceValue; |
| } |
| |
| const BITSTRING_template& NAME_template::ecuInstancceValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field ecuInstancceValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_ecuInstancceValue; |
| } |
| |
| BITSTRING_template& NAME_template::manufacturerCodeValue() |
| { |
| set_specific(); |
| return single_value->field_manufacturerCodeValue; |
| } |
| |
| const BITSTRING_template& NAME_template::manufacturerCodeValue() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field manufacturerCodeValue of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_manufacturerCodeValue; |
| } |
| |
| BITSTRING_template& NAME_template::identityNumberBits() |
| { |
| set_specific(); |
| return single_value->field_identityNumberBits; |
| } |
| |
| const BITSTRING_template& NAME_template::identityNumberBits() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field identityNumberBits of a non-specific template of type @IsobusNMMessageTypes.NAME."); |
| return single_value->field_identityNumberBits; |
| } |
| |
| int NAME_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 10; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME 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 @IsobusNMMessageTypes.NAME containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME."); |
| } |
| return 0; |
| } |
| |
| void NAME_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ selfConfigurableAddressValue := "); |
| single_value->field_selfConfigurableAddressValue.log(); |
| TTCN_Logger::log_event_str(", industryGroupValue := "); |
| single_value->field_industryGroupValue.log(); |
| TTCN_Logger::log_event_str(", deviceClassInstanceValue := "); |
| single_value->field_deviceClassInstanceValue.log(); |
| TTCN_Logger::log_event_str(", deviceClassValue := "); |
| single_value->field_deviceClassValue.log(); |
| TTCN_Logger::log_event_str(", reserveValued := "); |
| single_value->field_reserveValued.log(); |
| TTCN_Logger::log_event_str(", functionValue := "); |
| single_value->field_functionValue.log(); |
| TTCN_Logger::log_event_str(", functionInstanceValue := "); |
| single_value->field_functionInstanceValue.log(); |
| TTCN_Logger::log_event_str(", ecuInstancceValue := "); |
| single_value->field_ecuInstancceValue.log(); |
| TTCN_Logger::log_event_str(", manufacturerCodeValue := "); |
| single_value->field_manufacturerCodeValue.log(); |
| TTCN_Logger::log_event_str(", identityNumberBits := "); |
| single_value->field_identityNumberBits.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void NAME_template::log_match(const NAME& 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_selfConfigurableAddressValue.match(match_value.selfConfigurableAddressValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".selfConfigurableAddressValue"); |
| single_value->field_selfConfigurableAddressValue.log_match(match_value.selfConfigurableAddressValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_industryGroupValue.match(match_value.industryGroupValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".industryGroupValue"); |
| single_value->field_industryGroupValue.log_match(match_value.industryGroupValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_deviceClassInstanceValue.match(match_value.deviceClassInstanceValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".deviceClassInstanceValue"); |
| single_value->field_deviceClassInstanceValue.log_match(match_value.deviceClassInstanceValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_deviceClassValue.match(match_value.deviceClassValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".deviceClassValue"); |
| single_value->field_deviceClassValue.log_match(match_value.deviceClassValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserveValued.match(match_value.reserveValued(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserveValued"); |
| single_value->field_reserveValued.log_match(match_value.reserveValued(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_functionValue.match(match_value.functionValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".functionValue"); |
| single_value->field_functionValue.log_match(match_value.functionValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_functionInstanceValue.match(match_value.functionInstanceValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".functionInstanceValue"); |
| single_value->field_functionInstanceValue.log_match(match_value.functionInstanceValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_ecuInstancceValue.match(match_value.ecuInstancceValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".ecuInstancceValue"); |
| single_value->field_ecuInstancceValue.log_match(match_value.ecuInstancceValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_manufacturerCodeValue.match(match_value.manufacturerCodeValue(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".manufacturerCodeValue"); |
| single_value->field_manufacturerCodeValue.log_match(match_value.manufacturerCodeValue(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_identityNumberBits.match(match_value.identityNumberBits(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".identityNumberBits"); |
| single_value->field_identityNumberBits.log_match(match_value.identityNumberBits(), 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("{ selfConfigurableAddressValue := "); |
| single_value->field_selfConfigurableAddressValue.log_match(match_value.selfConfigurableAddressValue(), legacy); |
| TTCN_Logger::log_event_str(", industryGroupValue := "); |
| single_value->field_industryGroupValue.log_match(match_value.industryGroupValue(), legacy); |
| TTCN_Logger::log_event_str(", deviceClassInstanceValue := "); |
| single_value->field_deviceClassInstanceValue.log_match(match_value.deviceClassInstanceValue(), legacy); |
| TTCN_Logger::log_event_str(", deviceClassValue := "); |
| single_value->field_deviceClassValue.log_match(match_value.deviceClassValue(), legacy); |
| TTCN_Logger::log_event_str(", reserveValued := "); |
| single_value->field_reserveValued.log_match(match_value.reserveValued(), legacy); |
| TTCN_Logger::log_event_str(", functionValue := "); |
| single_value->field_functionValue.log_match(match_value.functionValue(), legacy); |
| TTCN_Logger::log_event_str(", functionInstanceValue := "); |
| single_value->field_functionInstanceValue.log_match(match_value.functionInstanceValue(), legacy); |
| TTCN_Logger::log_event_str(", ecuInstancceValue := "); |
| single_value->field_ecuInstancceValue.log_match(match_value.ecuInstancceValue(), legacy); |
| TTCN_Logger::log_event_str(", manufacturerCodeValue := "); |
| single_value->field_manufacturerCodeValue.log_match(match_value.manufacturerCodeValue(), legacy); |
| TTCN_Logger::log_event_str(", identityNumberBits := "); |
| single_value->field_identityNumberBits.log_match(match_value.identityNumberBits(), 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 NAME_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_selfConfigurableAddressValue.encode_text(text_buf); |
| single_value->field_industryGroupValue.encode_text(text_buf); |
| single_value->field_deviceClassInstanceValue.encode_text(text_buf); |
| single_value->field_deviceClassValue.encode_text(text_buf); |
| single_value->field_reserveValued.encode_text(text_buf); |
| single_value->field_functionValue.encode_text(text_buf); |
| single_value->field_functionInstanceValue.encode_text(text_buf); |
| single_value->field_ecuInstancceValue.encode_text(text_buf); |
| single_value->field_manufacturerCodeValue.encode_text(text_buf); |
| single_value->field_identityNumberBits.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 @IsobusNMMessageTypes.NAME."); |
| } |
| } |
| |
| void NAME_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_selfConfigurableAddressValue.decode_text(text_buf); |
| single_value->field_industryGroupValue.decode_text(text_buf); |
| single_value->field_deviceClassInstanceValue.decode_text(text_buf); |
| single_value->field_deviceClassValue.decode_text(text_buf); |
| single_value->field_reserveValued.decode_text(text_buf); |
| single_value->field_functionValue.decode_text(text_buf); |
| single_value->field_functionInstanceValue.decode_text(text_buf); |
| single_value->field_ecuInstancceValue.decode_text(text_buf); |
| single_value->field_manufacturerCodeValue.decode_text(text_buf); |
| single_value->field_identityNumberBits.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 NAME_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 @IsobusNMMessageTypes.NAME."); |
| } |
| } |
| |
| void NAME_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: { |
| NAME_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (10<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.NAME has 10 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) selfConfigurableAddressValue().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) industryGroupValue().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deviceClassInstanceValue().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) deviceClassValue().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserveValued().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) functionValue().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) functionInstanceValue().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) ecuInstancceValue().set_param(*param.get_elem(7)); |
| if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) manufacturerCodeValue().set_param(*param.get_elem(8)); |
| if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) identityNumberBits().set_param(*param.get_elem(9)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "selfConfigurableAddressValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| selfConfigurableAddressValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "industryGroupValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| industryGroupValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "deviceClassInstanceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| deviceClassInstanceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "deviceClassValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| deviceClassValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserveValued")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserveValued().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "functionValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| functionValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "functionInstanceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| functionInstanceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "ecuInstancceValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| ecuInstancceValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "manufacturerCodeValue")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| manufacturerCodeValue().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "identityNumberBits")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| identityNumberBits().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.NAME: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.NAME"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void NAME_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_selfConfigurableAddressValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_industryGroupValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_deviceClassInstanceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_deviceClassValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_reserveValued.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_functionValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_functionInstanceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_ecuInstancceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_manufacturerCodeValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| single_value->field_identityNumberBits.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME"); |
| 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 : "@IsobusNMMessageTypes.NAME"); |
| } |
| |
| boolean NAME_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean NAME_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| CannotClaimSourceAddress::CannotClaimSourceAddress() |
| { |
| } |
| |
| CannotClaimSourceAddress::CannotClaimSourceAddress(const NAME& par_name) |
| : field_name(par_name) |
| { |
| } |
| |
| CannotClaimSourceAddress::CannotClaimSourceAddress(const CannotClaimSourceAddress& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| |
| void CannotClaimSourceAddress::clean_up() |
| { |
| field_name.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* CannotClaimSourceAddress::get_descriptor() const { return &CannotClaimSourceAddress_descr_; } |
| CannotClaimSourceAddress& CannotClaimSourceAddress::operator=(const CannotClaimSourceAddress& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean CannotClaimSourceAddress::operator==(const CannotClaimSourceAddress& other_value) const |
| { |
| return field_name==other_value.field_name; |
| } |
| |
| boolean CannotClaimSourceAddress::is_bound() const |
| { |
| return (field_name.is_bound()); |
| } |
| boolean CannotClaimSourceAddress::is_value() const |
| { |
| return field_name.is_value(); |
| } |
| void CannotClaimSourceAddress::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ name := "); |
| field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void CannotClaimSourceAddress::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 (1<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.CannotClaimSourceAddress has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.CannotClaimSourceAddress: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.CannotClaimSourceAddress"); |
| } |
| } |
| |
| void CannotClaimSourceAddress::set_implicit_omit() |
| { |
| if (name().is_bound()) name().set_implicit_omit(); |
| } |
| |
| void CannotClaimSourceAddress::encode_text(Text_Buf& text_buf) const |
| { |
| field_name.encode_text(text_buf); |
| } |
| |
| void CannotClaimSourceAddress::decode_text(Text_Buf& text_buf) |
| { |
| field_name.decode_text(text_buf); |
| } |
| |
| void CannotClaimSourceAddress::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void CannotClaimSourceAddress::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int CannotClaimSourceAddress::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_name.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int CannotClaimSourceAddress::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 1; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(1); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_descr_.raw); |
| encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct CannotClaimSourceAddress_template::single_value_struct { |
| NAME_template field_name; |
| }; |
| |
| void CannotClaimSourceAddress_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_name = ANY_VALUE; |
| } |
| } |
| } |
| |
| void CannotClaimSourceAddress_template::copy_value(const CannotClaimSourceAddress& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.name().is_bound()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void CannotClaimSourceAddress_template::copy_template(const CannotClaimSourceAddress_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new CannotClaimSourceAddress_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| CannotClaimSourceAddress_template::CannotClaimSourceAddress_template() |
| { |
| } |
| |
| CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const CannotClaimSourceAddress& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const OPTIONAL<CannotClaimSourceAddress>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const CannotClaimSourceAddress&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress from an unbound optional field."); |
| } |
| } |
| |
| CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const CannotClaimSourceAddress_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| CannotClaimSourceAddress_template::~CannotClaimSourceAddress_template() |
| { |
| clean_up(); |
| } |
| |
| CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const CannotClaimSourceAddress& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const OPTIONAL<CannotClaimSourceAddress>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const CannotClaimSourceAddress&)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 @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| } |
| return *this; |
| } |
| |
| CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const CannotClaimSourceAddress_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean CannotClaimSourceAddress_template::match(const CannotClaimSourceAddress& 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.name().is_bound()) return FALSE; |
| if(!single_value->field_name.match(other_value.name(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| } |
| return FALSE; |
| } |
| |
| boolean CannotClaimSourceAddress_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_name.is_bound() |
| ; |
| } |
| |
| boolean CannotClaimSourceAddress_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_name.is_value(); |
| } |
| |
| void CannotClaimSourceAddress_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| CannotClaimSourceAddress CannotClaimSourceAddress_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 @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| CannotClaimSourceAddress ret_val; |
| if (single_value->field_name.is_bound()) { |
| ret_val.name() = single_value->field_name.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void CannotClaimSourceAddress_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new CannotClaimSourceAddress_template[list_length]; |
| } |
| |
| CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| return value_list.list_value[list_index]; |
| } |
| |
| NAME_template& CannotClaimSourceAddress_template::name() |
| { |
| set_specific(); |
| return single_value->field_name; |
| } |
| |
| const NAME_template& CannotClaimSourceAddress_template::name() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| return single_value->field_name; |
| } |
| |
| int CannotClaimSourceAddress_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 1; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress 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 @IsobusNMMessageTypes.CannotClaimSourceAddress containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| } |
| return 0; |
| } |
| |
| void CannotClaimSourceAddress_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ name := "); |
| single_value->field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void CannotClaimSourceAddress_template::log_match(const CannotClaimSourceAddress& 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_name.match(match_value.name(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".name"); |
| single_value->field_name.log_match(match_value.name(), 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("{ name := "); |
| single_value->field_name.log_match(match_value.name(), 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 CannotClaimSourceAddress_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_name.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 @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| } |
| } |
| |
| void CannotClaimSourceAddress_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_name.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 CannotClaimSourceAddress_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 @IsobusNMMessageTypes.CannotClaimSourceAddress."); |
| } |
| } |
| |
| void CannotClaimSourceAddress_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: { |
| CannotClaimSourceAddress_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (1<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.CannotClaimSourceAddress has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.CannotClaimSourceAddress: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.CannotClaimSourceAddress"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void CannotClaimSourceAddress_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CannotClaimSourceAddress"); |
| 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 : "@IsobusNMMessageTypes.CannotClaimSourceAddress"); |
| } |
| |
| boolean CannotClaimSourceAddress_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean CannotClaimSourceAddress_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| AddressClaimed::AddressClaimed() |
| { |
| } |
| |
| AddressClaimed::AddressClaimed(const NAME& par_name) |
| : field_name(par_name) |
| { |
| } |
| |
| AddressClaimed::AddressClaimed(const AddressClaimed& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.AddressClaimed."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| |
| void AddressClaimed::clean_up() |
| { |
| field_name.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* AddressClaimed::get_descriptor() const { return &AddressClaimed_descr_; } |
| AddressClaimed& AddressClaimed::operator=(const AddressClaimed& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.AddressClaimed."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean AddressClaimed::operator==(const AddressClaimed& other_value) const |
| { |
| return field_name==other_value.field_name; |
| } |
| |
| boolean AddressClaimed::is_bound() const |
| { |
| return (field_name.is_bound()); |
| } |
| boolean AddressClaimed::is_value() const |
| { |
| return field_name.is_value(); |
| } |
| void AddressClaimed::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ name := "); |
| field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void AddressClaimed::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 (1<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.AddressClaimed has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.AddressClaimed: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.AddressClaimed"); |
| } |
| } |
| |
| void AddressClaimed::set_implicit_omit() |
| { |
| if (name().is_bound()) name().set_implicit_omit(); |
| } |
| |
| void AddressClaimed::encode_text(Text_Buf& text_buf) const |
| { |
| field_name.encode_text(text_buf); |
| } |
| |
| void AddressClaimed::decode_text(Text_Buf& text_buf) |
| { |
| field_name.decode_text(text_buf); |
| } |
| |
| void AddressClaimed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void AddressClaimed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int AddressClaimed::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_name.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int AddressClaimed::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 1; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(1); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_descr_.raw); |
| encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct AddressClaimed_template::single_value_struct { |
| NAME_template field_name; |
| }; |
| |
| void AddressClaimed_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_name = ANY_VALUE; |
| } |
| } |
| } |
| |
| void AddressClaimed_template::copy_value(const AddressClaimed& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.name().is_bound()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void AddressClaimed_template::copy_template(const AddressClaimed_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new AddressClaimed_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| AddressClaimed_template::AddressClaimed_template() |
| { |
| } |
| |
| AddressClaimed_template::AddressClaimed_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| AddressClaimed_template::AddressClaimed_template(const AddressClaimed& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| AddressClaimed_template::AddressClaimed_template(const OPTIONAL<AddressClaimed>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const AddressClaimed&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.AddressClaimed from an unbound optional field."); |
| } |
| } |
| |
| AddressClaimed_template::AddressClaimed_template(const AddressClaimed_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| AddressClaimed_template::~AddressClaimed_template() |
| { |
| clean_up(); |
| } |
| |
| AddressClaimed_template& AddressClaimed_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| AddressClaimed_template& AddressClaimed_template::operator=(const AddressClaimed& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| AddressClaimed_template& AddressClaimed_template::operator=(const OPTIONAL<AddressClaimed>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const AddressClaimed&)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 @IsobusNMMessageTypes.AddressClaimed."); |
| } |
| return *this; |
| } |
| |
| AddressClaimed_template& AddressClaimed_template::operator=(const AddressClaimed_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean AddressClaimed_template::match(const AddressClaimed& 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.name().is_bound()) return FALSE; |
| if(!single_value->field_name.match(other_value.name(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed."); |
| } |
| return FALSE; |
| } |
| |
| boolean AddressClaimed_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_name.is_bound() |
| ; |
| } |
| |
| boolean AddressClaimed_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_name.is_value(); |
| } |
| |
| void AddressClaimed_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| AddressClaimed AddressClaimed_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 @IsobusNMMessageTypes.AddressClaimed."); |
| AddressClaimed ret_val; |
| if (single_value->field_name.is_bound()) { |
| ret_val.name() = single_value->field_name.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void AddressClaimed_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.AddressClaimed."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new AddressClaimed_template[list_length]; |
| } |
| |
| AddressClaimed_template& AddressClaimed_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.AddressClaimed."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.AddressClaimed."); |
| return value_list.list_value[list_index]; |
| } |
| |
| NAME_template& AddressClaimed_template::name() |
| { |
| set_specific(); |
| return single_value->field_name; |
| } |
| |
| const NAME_template& AddressClaimed_template::name() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.AddressClaimed."); |
| return single_value->field_name; |
| } |
| |
| int AddressClaimed_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 1; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed 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 @IsobusNMMessageTypes.AddressClaimed containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed."); |
| } |
| return 0; |
| } |
| |
| void AddressClaimed_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ name := "); |
| single_value->field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void AddressClaimed_template::log_match(const AddressClaimed& 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_name.match(match_value.name(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".name"); |
| single_value->field_name.log_match(match_value.name(), 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("{ name := "); |
| single_value->field_name.log_match(match_value.name(), 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 AddressClaimed_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_name.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 @IsobusNMMessageTypes.AddressClaimed."); |
| } |
| } |
| |
| void AddressClaimed_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_name.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 AddressClaimed_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 @IsobusNMMessageTypes.AddressClaimed."); |
| } |
| } |
| |
| void AddressClaimed_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: { |
| AddressClaimed_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (1<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.AddressClaimed has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.AddressClaimed: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.AddressClaimed"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void AddressClaimed_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.AddressClaimed"); |
| 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 : "@IsobusNMMessageTypes.AddressClaimed"); |
| } |
| |
| boolean AddressClaimed_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean AddressClaimed_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| RequestForAddressClaimed::RequestForAddressClaimed() |
| { |
| } |
| |
| RequestForAddressClaimed::RequestForAddressClaimed(const INTEGER& par_pgn) |
| : field_pgn(par_pgn) |
| { |
| } |
| |
| RequestForAddressClaimed::RequestForAddressClaimed(const RequestForAddressClaimed& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| if (other_value.pgn().is_bound()) field_pgn = other_value.pgn(); |
| else field_pgn.clean_up(); |
| } |
| |
| void RequestForAddressClaimed::clean_up() |
| { |
| field_pgn.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* RequestForAddressClaimed::get_descriptor() const { return &RequestForAddressClaimed_descr_; } |
| RequestForAddressClaimed& RequestForAddressClaimed::operator=(const RequestForAddressClaimed& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| if (other_value.pgn().is_bound()) field_pgn = other_value.pgn(); |
| else field_pgn.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean RequestForAddressClaimed::operator==(const RequestForAddressClaimed& other_value) const |
| { |
| return field_pgn==other_value.field_pgn; |
| } |
| |
| boolean RequestForAddressClaimed::is_bound() const |
| { |
| return (field_pgn.is_bound()); |
| } |
| boolean RequestForAddressClaimed::is_value() const |
| { |
| return field_pgn.is_value(); |
| } |
| void RequestForAddressClaimed::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ pgn := "); |
| field_pgn.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void RequestForAddressClaimed::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 (1<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.RequestForAddressClaimed has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgn")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgn().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.RequestForAddressClaimed: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.RequestForAddressClaimed"); |
| } |
| } |
| |
| void RequestForAddressClaimed::set_implicit_omit() |
| { |
| if (pgn().is_bound()) pgn().set_implicit_omit(); |
| } |
| |
| void RequestForAddressClaimed::encode_text(Text_Buf& text_buf) const |
| { |
| field_pgn.encode_text(text_buf); |
| } |
| |
| void RequestForAddressClaimed::decode_text(Text_Buf& text_buf) |
| { |
| field_pgn.decode_text(text_buf); |
| } |
| |
| void RequestForAddressClaimed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void RequestForAddressClaimed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int RequestForAddressClaimed::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, IsobusMessageTypes::PGN_descr_.raw->forceomit); |
| decoded_field_length = field_pgn.RAW_decode(IsobusMessageTypes::PGN_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int RequestForAddressClaimed::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 1; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(1); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, IsobusMessageTypes::PGN_descr_.raw); |
| encoded_length += field_pgn.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[0]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct RequestForAddressClaimed_template::single_value_struct { |
| INTEGER_template field_pgn; |
| }; |
| |
| void RequestForAddressClaimed_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_pgn = ANY_VALUE; |
| } |
| } |
| } |
| |
| void RequestForAddressClaimed_template::copy_value(const RequestForAddressClaimed& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.pgn().is_bound()) { |
| single_value->field_pgn = other_value.pgn(); |
| } else { |
| single_value->field_pgn.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void RequestForAddressClaimed_template::copy_template(const RequestForAddressClaimed_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.pgn().get_selection()) { |
| single_value->field_pgn = other_value.pgn(); |
| } else { |
| single_value->field_pgn.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new RequestForAddressClaimed_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| RequestForAddressClaimed_template::RequestForAddressClaimed_template() |
| { |
| } |
| |
| RequestForAddressClaimed_template::RequestForAddressClaimed_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| RequestForAddressClaimed_template::RequestForAddressClaimed_template(const RequestForAddressClaimed& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| RequestForAddressClaimed_template::RequestForAddressClaimed_template(const OPTIONAL<RequestForAddressClaimed>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const RequestForAddressClaimed&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.RequestForAddressClaimed from an unbound optional field."); |
| } |
| } |
| |
| RequestForAddressClaimed_template::RequestForAddressClaimed_template(const RequestForAddressClaimed_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| RequestForAddressClaimed_template::~RequestForAddressClaimed_template() |
| { |
| clean_up(); |
| } |
| |
| RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const RequestForAddressClaimed& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const OPTIONAL<RequestForAddressClaimed>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const RequestForAddressClaimed&)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 @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| } |
| return *this; |
| } |
| |
| RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const RequestForAddressClaimed_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean RequestForAddressClaimed_template::match(const RequestForAddressClaimed& 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.pgn().is_bound()) return FALSE; |
| if(!single_value->field_pgn.match(other_value.pgn(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| } |
| return FALSE; |
| } |
| |
| boolean RequestForAddressClaimed_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_pgn.is_bound() |
| ; |
| } |
| |
| boolean RequestForAddressClaimed_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_pgn.is_value(); |
| } |
| |
| void RequestForAddressClaimed_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| RequestForAddressClaimed RequestForAddressClaimed_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 @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| RequestForAddressClaimed ret_val; |
| if (single_value->field_pgn.is_bound()) { |
| ret_val.pgn() = single_value->field_pgn.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void RequestForAddressClaimed_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new RequestForAddressClaimed_template[list_length]; |
| } |
| |
| RequestForAddressClaimed_template& RequestForAddressClaimed_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& RequestForAddressClaimed_template::pgn() |
| { |
| set_specific(); |
| return single_value->field_pgn; |
| } |
| |
| const INTEGER_template& RequestForAddressClaimed_template::pgn() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgn of a non-specific template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| return single_value->field_pgn; |
| } |
| |
| int RequestForAddressClaimed_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 1; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed 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 @IsobusNMMessageTypes.RequestForAddressClaimed containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| } |
| return 0; |
| } |
| |
| void RequestForAddressClaimed_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ pgn := "); |
| single_value->field_pgn.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void RequestForAddressClaimed_template::log_match(const RequestForAddressClaimed& 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_pgn.match(match_value.pgn(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgn"); |
| single_value->field_pgn.log_match(match_value.pgn(), 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("{ pgn := "); |
| single_value->field_pgn.log_match(match_value.pgn(), 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 RequestForAddressClaimed_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_pgn.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 @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| } |
| } |
| |
| void RequestForAddressClaimed_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_pgn.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 RequestForAddressClaimed_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 @IsobusNMMessageTypes.RequestForAddressClaimed."); |
| } |
| } |
| |
| void RequestForAddressClaimed_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: { |
| RequestForAddressClaimed_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (1<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.RequestForAddressClaimed has 1 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(0)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgn")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgn().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.RequestForAddressClaimed: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.RequestForAddressClaimed"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void RequestForAddressClaimed_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_pgn.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestForAddressClaimed"); |
| 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 : "@IsobusNMMessageTypes.RequestForAddressClaimed"); |
| } |
| |
| boolean RequestForAddressClaimed_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean RequestForAddressClaimed_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| CommandedAddress::CommandedAddress() |
| { |
| } |
| |
| CommandedAddress::CommandedAddress(const NAME& par_name, |
| const OCTETSTRING& par_newSourceAddress) |
| : field_name(par_name), |
| field_newSourceAddress(par_newSourceAddress) |
| { |
| } |
| |
| CommandedAddress::CommandedAddress(const CommandedAddress& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.CommandedAddress."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| if (other_value.newSourceAddress().is_bound()) field_newSourceAddress = other_value.newSourceAddress(); |
| else field_newSourceAddress.clean_up(); |
| } |
| |
| void CommandedAddress::clean_up() |
| { |
| field_name.clean_up(); |
| field_newSourceAddress.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* CommandedAddress::get_descriptor() const { return &CommandedAddress_descr_; } |
| CommandedAddress& CommandedAddress::operator=(const CommandedAddress& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.CommandedAddress."); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| if (other_value.newSourceAddress().is_bound()) field_newSourceAddress = other_value.newSourceAddress(); |
| else field_newSourceAddress.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean CommandedAddress::operator==(const CommandedAddress& other_value) const |
| { |
| return field_name==other_value.field_name |
| && field_newSourceAddress==other_value.field_newSourceAddress; |
| } |
| |
| boolean CommandedAddress::is_bound() const |
| { |
| return (field_name.is_bound()) |
| || (field_newSourceAddress.is_bound()); |
| } |
| boolean CommandedAddress::is_value() const |
| { |
| return field_name.is_value() |
| && field_newSourceAddress.is_value(); |
| } |
| void CommandedAddress::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ name := "); |
| field_name.log(); |
| TTCN_Logger::log_event_str(", newSourceAddress := "); |
| field_newSourceAddress.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void CommandedAddress::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.CommandedAddress has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newSourceAddress().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "newSourceAddress")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| newSourceAddress().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.CommandedAddress: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.CommandedAddress"); |
| } |
| } |
| |
| void CommandedAddress::set_implicit_omit() |
| { |
| if (name().is_bound()) name().set_implicit_omit(); |
| if (newSourceAddress().is_bound()) newSourceAddress().set_implicit_omit(); |
| } |
| |
| void CommandedAddress::encode_text(Text_Buf& text_buf) const |
| { |
| field_name.encode_text(text_buf); |
| field_newSourceAddress.encode_text(text_buf); |
| } |
| |
| void CommandedAddress::decode_text(Text_Buf& text_buf) |
| { |
| field_name.decode_text(text_buf); |
| field_newSourceAddress.decode_text(text_buf); |
| } |
| |
| void CommandedAddress::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void CommandedAddress::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int CommandedAddress::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_name.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, SourceAddress_descr_.raw->forceomit); |
| decoded_field_length = field_newSourceAddress.RAW_decode(SourceAddress_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int CommandedAddress::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SourceAddress_descr_.raw); |
| encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_newSourceAddress.RAW_encode(SourceAddress_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct CommandedAddress_template::single_value_struct { |
| NAME_template field_name; |
| OCTETSTRING_template field_newSourceAddress; |
| }; |
| |
| void CommandedAddress_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_name = ANY_VALUE; |
| single_value->field_newSourceAddress = ANY_VALUE; |
| } |
| } |
| } |
| |
| void CommandedAddress_template::copy_value(const CommandedAddress& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.name().is_bound()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| if (other_value.newSourceAddress().is_bound()) { |
| single_value->field_newSourceAddress = other_value.newSourceAddress(); |
| } else { |
| single_value->field_newSourceAddress.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void CommandedAddress_template::copy_template(const CommandedAddress_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.newSourceAddress().get_selection()) { |
| single_value->field_newSourceAddress = other_value.newSourceAddress(); |
| } else { |
| single_value->field_newSourceAddress.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new CommandedAddress_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| CommandedAddress_template::CommandedAddress_template() |
| { |
| } |
| |
| CommandedAddress_template::CommandedAddress_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| CommandedAddress_template::CommandedAddress_template(const CommandedAddress& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| CommandedAddress_template::CommandedAddress_template(const OPTIONAL<CommandedAddress>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const CommandedAddress&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.CommandedAddress from an unbound optional field."); |
| } |
| } |
| |
| CommandedAddress_template::CommandedAddress_template(const CommandedAddress_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| CommandedAddress_template::~CommandedAddress_template() |
| { |
| clean_up(); |
| } |
| |
| CommandedAddress_template& CommandedAddress_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| CommandedAddress_template& CommandedAddress_template::operator=(const CommandedAddress& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| CommandedAddress_template& CommandedAddress_template::operator=(const OPTIONAL<CommandedAddress>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const CommandedAddress&)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 @IsobusNMMessageTypes.CommandedAddress."); |
| } |
| return *this; |
| } |
| |
| CommandedAddress_template& CommandedAddress_template::operator=(const CommandedAddress_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean CommandedAddress_template::match(const CommandedAddress& 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.name().is_bound()) return FALSE; |
| if(!single_value->field_name.match(other_value.name(), legacy))return FALSE; |
| if(!other_value.newSourceAddress().is_bound()) return FALSE; |
| if(!single_value->field_newSourceAddress.match(other_value.newSourceAddress(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress."); |
| } |
| return FALSE; |
| } |
| |
| boolean CommandedAddress_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_name.is_bound() |
| |
| ||single_value->field_newSourceAddress.is_bound() |
| ; |
| } |
| |
| boolean CommandedAddress_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_name.is_value() |
| &&single_value->field_newSourceAddress.is_value(); |
| } |
| |
| void CommandedAddress_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| CommandedAddress CommandedAddress_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 @IsobusNMMessageTypes.CommandedAddress."); |
| CommandedAddress ret_val; |
| if (single_value->field_name.is_bound()) { |
| ret_val.name() = single_value->field_name.valueof(); |
| } |
| if (single_value->field_newSourceAddress.is_bound()) { |
| ret_val.newSourceAddress() = single_value->field_newSourceAddress.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void CommandedAddress_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.CommandedAddress."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new CommandedAddress_template[list_length]; |
| } |
| |
| CommandedAddress_template& CommandedAddress_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.CommandedAddress."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.CommandedAddress."); |
| return value_list.list_value[list_index]; |
| } |
| |
| NAME_template& CommandedAddress_template::name() |
| { |
| set_specific(); |
| return single_value->field_name; |
| } |
| |
| const NAME_template& CommandedAddress_template::name() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.CommandedAddress."); |
| return single_value->field_name; |
| } |
| |
| OCTETSTRING_template& CommandedAddress_template::newSourceAddress() |
| { |
| set_specific(); |
| return single_value->field_newSourceAddress; |
| } |
| |
| const OCTETSTRING_template& CommandedAddress_template::newSourceAddress() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field newSourceAddress of a non-specific template of type @IsobusNMMessageTypes.CommandedAddress."); |
| return single_value->field_newSourceAddress; |
| } |
| |
| int CommandedAddress_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress 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 @IsobusNMMessageTypes.CommandedAddress 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 @IsobusNMMessageTypes.CommandedAddress containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress."); |
| } |
| return 0; |
| } |
| |
| void CommandedAddress_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ name := "); |
| single_value->field_name.log(); |
| TTCN_Logger::log_event_str(", newSourceAddress := "); |
| single_value->field_newSourceAddress.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void CommandedAddress_template::log_match(const CommandedAddress& 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_name.match(match_value.name(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".name"); |
| single_value->field_name.log_match(match_value.name(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_newSourceAddress.match(match_value.newSourceAddress(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".newSourceAddress"); |
| single_value->field_newSourceAddress.log_match(match_value.newSourceAddress(), 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("{ name := "); |
| single_value->field_name.log_match(match_value.name(), legacy); |
| TTCN_Logger::log_event_str(", newSourceAddress := "); |
| single_value->field_newSourceAddress.log_match(match_value.newSourceAddress(), 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 CommandedAddress_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_name.encode_text(text_buf); |
| single_value->field_newSourceAddress.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 @IsobusNMMessageTypes.CommandedAddress."); |
| } |
| } |
| |
| void CommandedAddress_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_name.decode_text(text_buf); |
| single_value->field_newSourceAddress.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 CommandedAddress_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 @IsobusNMMessageTypes.CommandedAddress."); |
| } |
| } |
| |
| void CommandedAddress_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: { |
| CommandedAddress_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.CommandedAddress has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newSourceAddress().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "newSourceAddress")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| newSourceAddress().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.CommandedAddress: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.CommandedAddress"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void CommandedAddress_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CommandedAddress"); |
| single_value->field_newSourceAddress.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CommandedAddress"); |
| 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 : "@IsobusNMMessageTypes.CommandedAddress"); |
| } |
| |
| boolean CommandedAddress_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean CommandedAddress_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| e__PortNumber::e__PortNumber() |
| { |
| enum_value = UNBOUND_VALUE; |
| } |
| |
| e__PortNumber::e__PortNumber(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber with invalid numeric value %d.", other_value); |
| enum_value = (enum_type)other_value; |
| } |
| |
| e__PortNumber::e__PortNumber(enum_type other_value) |
| { |
| enum_value = other_value; |
| } |
| |
| e__PortNumber::e__PortNumber(const e__PortNumber& other_value) |
| : Base_Type() |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| enum_value = other_value.enum_value; |
| } |
| |
| e__PortNumber& e__PortNumber::operator=(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber.", other_value); |
| enum_value = (enum_type)other_value; |
| return *this; |
| } |
| |
| e__PortNumber& e__PortNumber::operator=(enum_type other_value) |
| { |
| enum_value = other_value; |
| return *this; |
| } |
| |
| e__PortNumber& e__PortNumber::operator=(const e__PortNumber& other_value) |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| enum_value = other_value.enum_value; |
| return *this; |
| } |
| |
| boolean e__PortNumber::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 @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value == other_value; |
| } |
| |
| boolean e__PortNumber::operator==(const e__PortNumber& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value == other_value.enum_value; |
| } |
| |
| boolean e__PortNumber::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 @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value < other_value; |
| } |
| |
| boolean e__PortNumber::operator<(const e__PortNumber& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value < other_value.enum_value; |
| } |
| |
| boolean e__PortNumber::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 @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value > other_value; |
| } |
| |
| boolean e__PortNumber::operator>(const e__PortNumber& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value > other_value.enum_value; |
| } |
| |
| const char *e__PortNumber::enum_to_str(enum_type enum_par) |
| { |
| switch (enum_par) { |
| case port__local: return "port_local"; |
| case port__1: return "port_1"; |
| case port__2: return "port_2"; |
| case port__3: return "port_3"; |
| case port__4: return "port_4"; |
| case port__5: return "port_5"; |
| case port__6: return "port_6"; |
| case port__7: return "port_7"; |
| case port__8: return "port_8"; |
| case port__9: return "port_9"; |
| case port__10: return "port_10"; |
| case port__11: return "port_11"; |
| case port__12: return "port_12"; |
| case port__13: return "port_13"; |
| case port__14: return "port_14"; |
| case port__global: return "port_global"; |
| default: return "<unknown>"; |
| } |
| } |
| |
| e__PortNumber::enum_type e__PortNumber::str_to_enum(const char *str_par) |
| { |
| if (!strcmp(str_par, "port_local")) return port__local; |
| else if (!strcmp(str_par, "port_1")) return port__1; |
| else if (!strcmp(str_par, "port_2")) return port__2; |
| else if (!strcmp(str_par, "port_3")) return port__3; |
| else if (!strcmp(str_par, "port_4")) return port__4; |
| else if (!strcmp(str_par, "port_5")) return port__5; |
| else if (!strcmp(str_par, "port_6")) return port__6; |
| else if (!strcmp(str_par, "port_7")) return port__7; |
| else if (!strcmp(str_par, "port_8")) return port__8; |
| else if (!strcmp(str_par, "port_9")) return port__9; |
| else if (!strcmp(str_par, "port_10")) return port__10; |
| else if (!strcmp(str_par, "port_11")) return port__11; |
| else if (!strcmp(str_par, "port_12")) return port__12; |
| else if (!strcmp(str_par, "port_13")) return port__13; |
| else if (!strcmp(str_par, "port_14")) return port__14; |
| else if (!strcmp(str_par, "port_global")) return port__global; |
| else return UNKNOWN_VALUE; |
| } |
| |
| boolean e__PortNumber::is_valid_enum(int int_par) |
| { |
| switch (int_par) { |
| case 0: |
| case 1: |
| case 2: |
| case 3: |
| case 4: |
| case 5: |
| case 6: |
| case 7: |
| case 8: |
| case 9: |
| case 10: |
| case 11: |
| case 12: |
| case 13: |
| case 14: |
| case 15: |
| return TRUE; |
| default: |
| return FALSE; |
| } |
| } |
| |
| int e__PortNumber::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 @IsobusNMMessageTypes.e_PortNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par; |
| } |
| |
| int e__PortNumber::enum2int(const e__PortNumber& 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 @IsobusNMMessageTypes.e_PortNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par.enum_value; |
| } |
| |
| void e__PortNumber::int2enum(int int_val) |
| { |
| if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber.", int_val); |
| enum_value = (enum_type)int_val; |
| } |
| |
| e__PortNumber::operator e__PortNumber::enum_type() const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| return enum_value; |
| } |
| |
| void e__PortNumber::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 e__PortNumber::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", "@IsobusNMMessageTypes.e_PortNumber"); |
| enum_value = str_to_enum(param.get_enumerated()); |
| if (!is_valid_enum(enum_value)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| } |
| |
| void e__PortNumber::encode_text(Text_Buf& text_buf) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| text_buf.push_int(enum_value); |
| } |
| |
| void e__PortNumber::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 @IsobusNMMessageTypes.e_PortNumber.", enum_value); |
| } |
| |
| void e__PortNumber::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void e__PortNumber::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int e__PortNumber::RAW_decode(const TTCN_Typedescriptor_t& p_td,TTCN_Buffer& p_buf,int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit*) |
| { |
| int decoded_value = 0; |
| int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 5, no_err); |
| if (decoded_length < 0) return decoded_length; |
| if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; |
| else { |
| if(no_err){ |
| return -1; |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); |
| enum_value = UNKNOWN_VALUE; |
| } |
| } |
| return decoded_length; |
| } |
| |
| int e__PortNumber::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const |
| { |
| return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 5); |
| } |
| |
| void e__PortNumber_template::copy_template(const e__PortNumber_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: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new e__PortNumber_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| } |
| |
| e__PortNumber_template::e__PortNumber_template() |
| { |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(int other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (!e__PortNumber::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_PortNumber with unknown numeric value %d.", other_value); |
| single_value = (e__PortNumber::enum_type)other_value; |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(e__PortNumber::enum_type other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| single_value = other_value; |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(const e__PortNumber& other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| single_value = other_value.enum_value; |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(const OPTIONAL<e__PortNumber>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__PortNumber::enum_type)(const e__PortNumber&)other_value; |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_PortNumber from an unbound optional field."); |
| } |
| } |
| |
| e__PortNumber_template::e__PortNumber_template(const e__PortNumber_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| e__PortNumber_template::~e__PortNumber_template() |
| { |
| clean_up(); |
| } |
| |
| boolean e__PortNumber_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| return TRUE; |
| } |
| |
| boolean e__PortNumber_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value != e__PortNumber::UNBOUND_VALUE; |
| } |
| |
| void e__PortNumber_template::clean_up() |
| { |
| if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(int other_value) |
| { |
| if (!e__PortNumber::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.", other_value); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__PortNumber::enum_type)other_value; |
| return *this; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(e__PortNumber::enum_type other_value) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value; |
| return *this; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(const e__PortNumber& other_value) |
| { |
| if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber to a template."); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value.enum_value; |
| return *this; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(const OPTIONAL<e__PortNumber>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__PortNumber::enum_type)(const e__PortNumber&)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 @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| return *this; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::operator=(const e__PortNumber_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean e__PortNumber_template::match(e__PortNumber::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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| return FALSE; |
| } |
| |
| boolean e__PortNumber_template::match(const e__PortNumber& other_value, boolean) const |
| { |
| if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_PortNumber with an unbound value."); |
| return match(other_value.enum_value); |
| } |
| |
| e__PortNumber::enum_type e__PortNumber_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 @IsobusNMMessageTypes.e_PortNumber."); |
| return single_value; |
| } |
| |
| void e__PortNumber_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new e__PortNumber_template[list_length]; |
| } |
| |
| e__PortNumber_template& e__PortNumber_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_PortNumber."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void e__PortNumber_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_enum(e__PortNumber::enum_to_str(single_value), single_value); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void e__PortNumber_template::log_match(const e__PortNumber& 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 e__PortNumber_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 @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| } |
| |
| void e__PortNumber_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = (e__PortNumber::enum_type)text_buf.pull_int().get_val(); |
| if (!e__PortNumber::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.", 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 e__PortNumber_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 @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| } |
| |
| boolean e__PortNumber_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean e__PortNumber_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void e__PortNumber_template::set_param(Module_Param& param) |
| { |
| param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: { |
| e__PortNumber_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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: { |
| e__PortNumber::enum_type enum_val = e__PortNumber::str_to_enum(m_p->get_enumerated()); |
| if (!e__PortNumber::is_valid_enum(enum_val)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_PortNumber."); |
| } |
| *this = enum_val; |
| } break; |
| default: |
| param.type_error("enumerated template", "@IsobusNMMessageTypes.e_PortNumber"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void e__PortNumber_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 : "@IsobusNMMessageTypes.e_PortNumber"); |
| } |
| |
| PortPair::PortPair() |
| { |
| } |
| |
| PortPair::PortPair(const e__PortNumber& par_fromPort, |
| const e__PortNumber& par_toPort) |
| : field_fromPort(par_fromPort), |
| field_toPort(par_toPort) |
| { |
| } |
| |
| PortPair::PortPair(const PortPair& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PortPair."); |
| if (other_value.fromPort().is_bound()) field_fromPort = other_value.fromPort(); |
| else field_fromPort.clean_up(); |
| if (other_value.toPort().is_bound()) field_toPort = other_value.toPort(); |
| else field_toPort.clean_up(); |
| } |
| |
| void PortPair::clean_up() |
| { |
| field_fromPort.clean_up(); |
| field_toPort.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* PortPair::get_descriptor() const { return &PortPair_descr_; } |
| PortPair& PortPair::operator=(const PortPair& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PortPair."); |
| if (other_value.fromPort().is_bound()) field_fromPort = other_value.fromPort(); |
| else field_fromPort.clean_up(); |
| if (other_value.toPort().is_bound()) field_toPort = other_value.toPort(); |
| else field_toPort.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean PortPair::operator==(const PortPair& other_value) const |
| { |
| return field_fromPort==other_value.field_fromPort |
| && field_toPort==other_value.field_toPort; |
| } |
| |
| boolean PortPair::is_bound() const |
| { |
| return (field_fromPort.is_bound()) |
| || (field_toPort.is_bound()); |
| } |
| boolean PortPair::is_value() const |
| { |
| return field_fromPort.is_value() |
| && field_toPort.is_value(); |
| } |
| void PortPair::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ fromPort := "); |
| field_fromPort.log(); |
| TTCN_Logger::log_event_str(", toPort := "); |
| field_toPort.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void PortPair::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.PortPair has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) fromPort().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) toPort().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "fromPort")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| fromPort().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "toPort")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| toPort().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PortPair: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.PortPair"); |
| } |
| } |
| |
| void PortPair::set_implicit_omit() |
| { |
| if (fromPort().is_bound()) fromPort().set_implicit_omit(); |
| if (toPort().is_bound()) toPort().set_implicit_omit(); |
| } |
| |
| void PortPair::encode_text(Text_Buf& text_buf) const |
| { |
| field_fromPort.encode_text(text_buf); |
| field_toPort.encode_text(text_buf); |
| } |
| |
| void PortPair::decode_text(Text_Buf& text_buf) |
| { |
| field_fromPort.decode_text(text_buf); |
| field_toPort.decode_text(text_buf); |
| } |
| |
| void PortPair::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void PortPair::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int PortPair::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, e__PortNumber_descr_.raw->forceomit); |
| decoded_field_length = field_fromPort.RAW_decode(e__PortNumber_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, e__PortNumber_descr_.raw->forceomit); |
| decoded_field_length = field_toPort.RAW_decode(e__PortNumber_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int PortPair::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, e__PortNumber_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__PortNumber_descr_.raw); |
| encoded_length += field_fromPort.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_toPort.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct PortPair_template::single_value_struct { |
| e__PortNumber_template field_fromPort; |
| e__PortNumber_template field_toPort; |
| }; |
| |
| void PortPair_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_fromPort = ANY_VALUE; |
| single_value->field_toPort = ANY_VALUE; |
| } |
| } |
| } |
| |
| void PortPair_template::copy_value(const PortPair& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.fromPort().is_bound()) { |
| single_value->field_fromPort = other_value.fromPort(); |
| } else { |
| single_value->field_fromPort.clean_up(); |
| } |
| if (other_value.toPort().is_bound()) { |
| single_value->field_toPort = other_value.toPort(); |
| } else { |
| single_value->field_toPort.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void PortPair_template::copy_template(const PortPair_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.fromPort().get_selection()) { |
| single_value->field_fromPort = other_value.fromPort(); |
| } else { |
| single_value->field_fromPort.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.toPort().get_selection()) { |
| single_value->field_toPort = other_value.toPort(); |
| } else { |
| single_value->field_toPort.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new PortPair_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| PortPair_template::PortPair_template() |
| { |
| } |
| |
| PortPair_template::PortPair_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| PortPair_template::PortPair_template(const PortPair& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| PortPair_template::PortPair_template(const OPTIONAL<PortPair>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PortPair&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.PortPair from an unbound optional field."); |
| } |
| } |
| |
| PortPair_template::PortPair_template(const PortPair_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| PortPair_template::~PortPair_template() |
| { |
| clean_up(); |
| } |
| |
| PortPair_template& PortPair_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| PortPair_template& PortPair_template::operator=(const PortPair& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| PortPair_template& PortPair_template::operator=(const OPTIONAL<PortPair>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PortPair&)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 @IsobusNMMessageTypes.PortPair."); |
| } |
| return *this; |
| } |
| |
| PortPair_template& PortPair_template::operator=(const PortPair_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean PortPair_template::match(const PortPair& 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.fromPort().is_bound()) return FALSE; |
| if(!single_value->field_fromPort.match(other_value.fromPort(), legacy))return FALSE; |
| if(!other_value.toPort().is_bound()) return FALSE; |
| if(!single_value->field_toPort.match(other_value.toPort(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair."); |
| } |
| return FALSE; |
| } |
| |
| boolean PortPair_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_fromPort.is_bound() |
| |
| ||single_value->field_toPort.is_bound() |
| ; |
| } |
| |
| boolean PortPair_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_fromPort.is_value() |
| &&single_value->field_toPort.is_value(); |
| } |
| |
| void PortPair_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| PortPair PortPair_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 @IsobusNMMessageTypes.PortPair."); |
| PortPair ret_val; |
| if (single_value->field_fromPort.is_bound()) { |
| ret_val.fromPort() = single_value->field_fromPort.valueof(); |
| } |
| if (single_value->field_toPort.is_bound()) { |
| ret_val.toPort() = single_value->field_toPort.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void PortPair_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PortPair."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new PortPair_template[list_length]; |
| } |
| |
| PortPair_template& PortPair_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PortPair."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PortPair."); |
| return value_list.list_value[list_index]; |
| } |
| |
| e__PortNumber_template& PortPair_template::fromPort() |
| { |
| set_specific(); |
| return single_value->field_fromPort; |
| } |
| |
| const e__PortNumber_template& PortPair_template::fromPort() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field fromPort of a non-specific template of type @IsobusNMMessageTypes.PortPair."); |
| return single_value->field_fromPort; |
| } |
| |
| e__PortNumber_template& PortPair_template::toPort() |
| { |
| set_specific(); |
| return single_value->field_toPort; |
| } |
| |
| const e__PortNumber_template& PortPair_template::toPort() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field toPort of a non-specific template of type @IsobusNMMessageTypes.PortPair."); |
| return single_value->field_toPort; |
| } |
| |
| int PortPair_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair 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 @IsobusNMMessageTypes.PortPair 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 @IsobusNMMessageTypes.PortPair containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair."); |
| } |
| return 0; |
| } |
| |
| void PortPair_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ fromPort := "); |
| single_value->field_fromPort.log(); |
| TTCN_Logger::log_event_str(", toPort := "); |
| single_value->field_toPort.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void PortPair_template::log_match(const PortPair& 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_fromPort.match(match_value.fromPort(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".fromPort"); |
| single_value->field_fromPort.log_match(match_value.fromPort(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_toPort.match(match_value.toPort(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".toPort"); |
| single_value->field_toPort.log_match(match_value.toPort(), 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("{ fromPort := "); |
| single_value->field_fromPort.log_match(match_value.fromPort(), legacy); |
| TTCN_Logger::log_event_str(", toPort := "); |
| single_value->field_toPort.log_match(match_value.toPort(), 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 PortPair_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_fromPort.encode_text(text_buf); |
| single_value->field_toPort.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 @IsobusNMMessageTypes.PortPair."); |
| } |
| } |
| |
| void PortPair_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_fromPort.decode_text(text_buf); |
| single_value->field_toPort.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 PortPair_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 @IsobusNMMessageTypes.PortPair."); |
| } |
| } |
| |
| void PortPair_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: { |
| PortPair_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.PortPair has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) fromPort().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) toPort().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "fromPort")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| fromPort().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "toPort")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| toPort().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PortPair: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.PortPair"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void PortPair_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_fromPort.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortPair"); |
| single_value->field_toPort.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortPair"); |
| 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 : "@IsobusNMMessageTypes.PortPair"); |
| } |
| |
| boolean PortPair_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean PortPair_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__MFDB__Request::N__MFDB__Request() |
| { |
| } |
| |
| N__MFDB__Request::N__MFDB__Request(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__MFDB__Request::N__MFDB__Request(const N__MFDB__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__MFDB__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Request::get_descriptor() const { return &N__MFDB__Request_descr_; } |
| N__MFDB__Request& N__MFDB__Request::operator=(const N__MFDB__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Request::operator==(const N__MFDB__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__MFDB__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__MFDB__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__MFDB__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Request::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Request"); |
| } |
| } |
| |
| void N__MFDB__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__MFDB__Request_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__MFDB__Request_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__MFDB__Request_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__MFDB__Request_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__MFDB__Request_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__MFDB__Request_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__MFDB__Request_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__MFDB__Request_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__MFDB__Request_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__MFDB__Request_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__MFDB__Request_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__MFDB__Request_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Request_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Request_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDB__Request_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__MFDB__Request_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__MFDB__Request_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__MFDB__Request_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__MFDB__Request_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__MFDB__Request_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__MFDB__Request_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__MFDB__Request_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__MFDB__Request_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__MFDB__Request_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__MFDB__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Request_template::copy_value(const N__MFDB__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Request_template::copy_template(const N__MFDB__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Request_template::N__MFDB__Request_template() |
| { |
| } |
| |
| N__MFDB__Request_template::N__MFDB__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Request_template::N__MFDB__Request_template(const N__MFDB__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Request_template::N__MFDB__Request_template(const OPTIONAL<N__MFDB__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Request from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Request_template::N__MFDB__Request_template(const N__MFDB__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Request_template::~N__MFDB__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Request_template& N__MFDB__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Request_template& N__MFDB__Request_template::operator=(const N__MFDB__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Request_template& N__MFDB__Request_template::operator=(const OPTIONAL<N__MFDB__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Request&)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 @IsobusNMMessageTypes.N_MFDB_Request."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Request_template& N__MFDB__Request_template::operator=(const N__MFDB__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Request_template::match(const N__MFDB__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__MFDB__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Request N__MFDB__Request_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 @IsobusNMMessageTypes.N_MFDB_Request."); |
| N__MFDB__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Request_template[list_length]; |
| } |
| |
| N__MFDB__Request_template& N__MFDB__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Request_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Request_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__MFDB__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request 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 @IsobusNMMessageTypes.N_MFDB_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Request_template::log_match(const N__MFDB__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__MFDB__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_MFDB_Request."); |
| } |
| } |
| |
| void N__MFDB__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__MFDB__Request_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 @IsobusNMMessageTypes.N_MFDB_Request."); |
| } |
| } |
| |
| void N__MFDB__Request_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: { |
| N__MFDB__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Request"); |
| } |
| |
| boolean N__MFDB__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| e__FilterMode::e__FilterMode() |
| { |
| enum_value = UNBOUND_VALUE; |
| } |
| |
| e__FilterMode::e__FilterMode(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode with invalid numeric value %d.", other_value); |
| enum_value = (enum_type)other_value; |
| } |
| |
| e__FilterMode::e__FilterMode(enum_type other_value) |
| { |
| enum_value = other_value; |
| } |
| |
| e__FilterMode::e__FilterMode(const e__FilterMode& other_value) |
| : Base_Type() |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| enum_value = other_value.enum_value; |
| } |
| |
| e__FilterMode& e__FilterMode::operator=(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode.", other_value); |
| enum_value = (enum_type)other_value; |
| return *this; |
| } |
| |
| e__FilterMode& e__FilterMode::operator=(enum_type other_value) |
| { |
| enum_value = other_value; |
| return *this; |
| } |
| |
| e__FilterMode& e__FilterMode::operator=(const e__FilterMode& other_value) |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| enum_value = other_value.enum_value; |
| return *this; |
| } |
| |
| boolean e__FilterMode::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 @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value == other_value; |
| } |
| |
| boolean e__FilterMode::operator==(const e__FilterMode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value == other_value.enum_value; |
| } |
| |
| boolean e__FilterMode::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 @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value < other_value; |
| } |
| |
| boolean e__FilterMode::operator<(const e__FilterMode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value < other_value.enum_value; |
| } |
| |
| boolean e__FilterMode::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 @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value > other_value; |
| } |
| |
| boolean e__FilterMode::operator>(const e__FilterMode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value > other_value.enum_value; |
| } |
| |
| const char *e__FilterMode::enum_to_str(enum_type enum_par) |
| { |
| switch (enum_par) { |
| case blockSpecificPGNs: return "blockSpecificPGNs"; |
| case passSecificPGNs: return "passSecificPGNs"; |
| default: return "<unknown>"; |
| } |
| } |
| |
| e__FilterMode::enum_type e__FilterMode::str_to_enum(const char *str_par) |
| { |
| if (!strcmp(str_par, "blockSpecificPGNs")) return blockSpecificPGNs; |
| else if (!strcmp(str_par, "passSecificPGNs")) return passSecificPGNs; |
| else return UNKNOWN_VALUE; |
| } |
| |
| boolean e__FilterMode::is_valid_enum(int int_par) |
| { |
| switch (int_par) { |
| case 0: |
| case 1: |
| return TRUE; |
| default: |
| return FALSE; |
| } |
| } |
| |
| int e__FilterMode::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 @IsobusNMMessageTypes.e_FilterMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par; |
| } |
| |
| int e__FilterMode::enum2int(const e__FilterMode& 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 @IsobusNMMessageTypes.e_FilterMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par.enum_value; |
| } |
| |
| void e__FilterMode::int2enum(int int_val) |
| { |
| if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode.", int_val); |
| enum_value = (enum_type)int_val; |
| } |
| |
| e__FilterMode::operator e__FilterMode::enum_type() const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| return enum_value; |
| } |
| |
| void e__FilterMode::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 e__FilterMode::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", "@IsobusNMMessageTypes.e_FilterMode"); |
| enum_value = str_to_enum(param.get_enumerated()); |
| if (!is_valid_enum(enum_value)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| } |
| |
| void e__FilterMode::encode_text(Text_Buf& text_buf) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| text_buf.push_int(enum_value); |
| } |
| |
| void e__FilterMode::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 @IsobusNMMessageTypes.e_FilterMode.", enum_value); |
| } |
| |
| void e__FilterMode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void e__FilterMode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int e__FilterMode::RAW_decode(const TTCN_Typedescriptor_t& p_td,TTCN_Buffer& p_buf,int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit*) |
| { |
| int decoded_value = 0; |
| int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err); |
| if (decoded_length < 0) return decoded_length; |
| if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; |
| else { |
| if(no_err){ |
| return -1; |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); |
| enum_value = UNKNOWN_VALUE; |
| } |
| } |
| return decoded_length; |
| } |
| |
| int e__FilterMode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const |
| { |
| return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2); |
| } |
| |
| void e__FilterMode_template::copy_template(const e__FilterMode_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: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new e__FilterMode_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| } |
| |
| e__FilterMode_template::e__FilterMode_template() |
| { |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(int other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (!e__FilterMode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_FilterMode with unknown numeric value %d.", other_value); |
| single_value = (e__FilterMode::enum_type)other_value; |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(e__FilterMode::enum_type other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| single_value = other_value; |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(const e__FilterMode& other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| single_value = other_value.enum_value; |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(const OPTIONAL<e__FilterMode>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FilterMode::enum_type)(const e__FilterMode&)other_value; |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_FilterMode from an unbound optional field."); |
| } |
| } |
| |
| e__FilterMode_template::e__FilterMode_template(const e__FilterMode_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| e__FilterMode_template::~e__FilterMode_template() |
| { |
| clean_up(); |
| } |
| |
| boolean e__FilterMode_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| return TRUE; |
| } |
| |
| boolean e__FilterMode_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value != e__FilterMode::UNBOUND_VALUE; |
| } |
| |
| void e__FilterMode_template::clean_up() |
| { |
| if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(int other_value) |
| { |
| if (!e__FilterMode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.", other_value); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FilterMode::enum_type)other_value; |
| return *this; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(e__FilterMode::enum_type other_value) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value; |
| return *this; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(const e__FilterMode& other_value) |
| { |
| if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode to a template."); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value.enum_value; |
| return *this; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(const OPTIONAL<e__FilterMode>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FilterMode::enum_type)(const e__FilterMode&)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 @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| return *this; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::operator=(const e__FilterMode_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean e__FilterMode_template::match(e__FilterMode::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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| return FALSE; |
| } |
| |
| boolean e__FilterMode_template::match(const e__FilterMode& other_value, boolean) const |
| { |
| if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_FilterMode with an unbound value."); |
| return match(other_value.enum_value); |
| } |
| |
| e__FilterMode::enum_type e__FilterMode_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 @IsobusNMMessageTypes.e_FilterMode."); |
| return single_value; |
| } |
| |
| void e__FilterMode_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new e__FilterMode_template[list_length]; |
| } |
| |
| e__FilterMode_template& e__FilterMode_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_FilterMode."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void e__FilterMode_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_enum(e__FilterMode::enum_to_str(single_value), single_value); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void e__FilterMode_template::log_match(const e__FilterMode& 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 e__FilterMode_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 @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| } |
| |
| void e__FilterMode_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = (e__FilterMode::enum_type)text_buf.pull_int().get_val(); |
| if (!e__FilterMode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.", 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 e__FilterMode_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 @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| } |
| |
| boolean e__FilterMode_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean e__FilterMode_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void e__FilterMode_template::set_param(Module_Param& param) |
| { |
| param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: { |
| e__FilterMode_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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: { |
| e__FilterMode::enum_type enum_val = e__FilterMode::str_to_enum(m_p->get_enumerated()); |
| if (!e__FilterMode::is_valid_enum(enum_val)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FilterMode."); |
| } |
| *this = enum_val; |
| } break; |
| default: |
| param.type_error("enumerated template", "@IsobusNMMessageTypes.e_FilterMode"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void e__FilterMode_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 : "@IsobusNMMessageTypes.e_FilterMode"); |
| } |
| |
| N__MFDB__Response::N__MFDB__Response() |
| { |
| } |
| |
| N__MFDB__Response::N__MFDB__Response(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const e__FilterMode& par_filterMode, |
| const N__MFDB__Response_pgnEntries& par_pgnEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_filterMode(par_filterMode), |
| field_pgnEntries(par_pgnEntries) |
| { |
| } |
| |
| N__MFDB__Response::N__MFDB__Response(const N__MFDB__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| |
| void N__MFDB__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_filterMode.clean_up(); |
| field_pgnEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Response::get_descriptor() const { return &N__MFDB__Response_descr_; } |
| N__MFDB__Response& N__MFDB__Response::operator=(const N__MFDB__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Response::operator==(const N__MFDB__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_filterMode==other_value.field_filterMode |
| && field_pgnEntries==other_value.field_pgnEntries; |
| } |
| |
| boolean N__MFDB__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_filterMode.is_bound()) |
| || (field_pgnEntries.is_bound()); |
| } |
| boolean N__MFDB__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_filterMode.is_value() |
| && field_pgnEntries.is_value(); |
| } |
| void N__MFDB__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| field_filterMode.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Response::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Response"); |
| } |
| } |
| |
| void N__MFDB__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (filterMode().is_bound()) filterMode().set_implicit_omit(); |
| if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_filterMode.encode_text(text_buf); |
| field_pgnEntries.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_filterMode.decode_text(text_buf); |
| field_pgnEntries.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, e__FilterMode_descr_.raw->forceomit); |
| decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__MFDB__Response_pgnEntries_descr_.raw->forceomit); |
| decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Response_pgnEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Response_pgnEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Response_pgnEntries_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| e__FilterMode_template field_filterMode; |
| N__MFDB__Response_pgnEntries_template field_pgnEntries; |
| }; |
| |
| void N__MFDB__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_filterMode = ANY_VALUE; |
| single_value->field_pgnEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Response_template::copy_value(const N__MFDB__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.filterMode().is_bound()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (other_value.pgnEntries().is_bound()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Response_template::copy_template(const N__MFDB__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Response_template::N__MFDB__Response_template() |
| { |
| } |
| |
| N__MFDB__Response_template::N__MFDB__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Response_template::N__MFDB__Response_template(const N__MFDB__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Response_template::N__MFDB__Response_template(const OPTIONAL<N__MFDB__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Response from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Response_template::N__MFDB__Response_template(const N__MFDB__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Response_template::~N__MFDB__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Response_template& N__MFDB__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Response_template& N__MFDB__Response_template::operator=(const N__MFDB__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Response_template& N__MFDB__Response_template::operator=(const OPTIONAL<N__MFDB__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Response&)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 @IsobusNMMessageTypes.N_MFDB_Response."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Response_template& N__MFDB__Response_template::operator=(const N__MFDB__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Response_template::match(const N__MFDB__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.filterMode().is_bound()) return FALSE; |
| if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE; |
| if(!other_value.pgnEntries().is_bound()) return FALSE; |
| if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_filterMode.is_bound() |
| |
| ||single_value->field_pgnEntries.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_filterMode.is_value() |
| &&single_value->field_pgnEntries.is_value(); |
| } |
| |
| void N__MFDB__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Response N__MFDB__Response_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 @IsobusNMMessageTypes.N_MFDB_Response."); |
| N__MFDB__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_filterMode.is_bound()) { |
| ret_val.filterMode() = single_value->field_filterMode.valueof(); |
| } |
| if (single_value->field_pgnEntries.is_bound()) { |
| ret_val.pgnEntries() = single_value->field_pgnEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Response_template[list_length]; |
| } |
| |
| N__MFDB__Response_template& N__MFDB__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| return single_value->field_portPair; |
| } |
| |
| e__FilterMode_template& N__MFDB__Response_template::filterMode() |
| { |
| set_specific(); |
| return single_value->field_filterMode; |
| } |
| |
| const e__FilterMode_template& N__MFDB__Response_template::filterMode() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| return single_value->field_filterMode; |
| } |
| |
| N__MFDB__Response_pgnEntries_template& N__MFDB__Response_template::pgnEntries() |
| { |
| set_specific(); |
| return single_value->field_pgnEntries; |
| } |
| |
| const N__MFDB__Response_pgnEntries_template& N__MFDB__Response_template::pgnEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| return single_value->field_pgnEntries; |
| } |
| |
| int N__MFDB__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response 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 @IsobusNMMessageTypes.N_MFDB_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Response_template::log_match(const N__MFDB__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".filterMode"); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgnEntries"); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_filterMode.encode_text(text_buf); |
| single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Response."); |
| } |
| } |
| |
| void N__MFDB__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_filterMode.decode_text(text_buf); |
| single_value->field_pgnEntries.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 N__MFDB__Response_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 @IsobusNMMessageTypes.N_MFDB_Response."); |
| } |
| } |
| |
| void N__MFDB__Response_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: { |
| N__MFDB__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response"); |
| single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response"); |
| single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Response"); |
| } |
| |
| boolean N__MFDB__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__MFDB__Add::N__MFDB__Add() |
| { |
| } |
| |
| N__MFDB__Add::N__MFDB__Add(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const N__MFDB__Add_pgnEntries& par_pgnEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_pgnEntries(par_pgnEntries) |
| { |
| } |
| |
| N__MFDB__Add::N__MFDB__Add(const N__MFDB__Add& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| |
| void N__MFDB__Add::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_pgnEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Add::get_descriptor() const { return &N__MFDB__Add_descr_; } |
| N__MFDB__Add& N__MFDB__Add::operator=(const N__MFDB__Add& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Add::operator==(const N__MFDB__Add& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_pgnEntries==other_value.field_pgnEntries; |
| } |
| |
| boolean N__MFDB__Add::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_pgnEntries.is_bound()); |
| } |
| boolean N__MFDB__Add::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_pgnEntries.is_value(); |
| } |
| void N__MFDB__Add::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Add::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Add has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Add: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Add"); |
| } |
| } |
| |
| void N__MFDB__Add::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Add::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_pgnEntries.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Add::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_pgnEntries.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Add::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Add::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Add::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__MFDB__Add_pgnEntries_descr_.raw->forceomit); |
| decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Add_pgnEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Add::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Add_pgnEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Add_pgnEntries_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Add_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| N__MFDB__Add_pgnEntries_template field_pgnEntries; |
| }; |
| |
| void N__MFDB__Add_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_pgnEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Add_template::copy_value(const N__MFDB__Add& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.pgnEntries().is_bound()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Add_template::copy_template(const N__MFDB__Add_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Add_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Add_template::N__MFDB__Add_template() |
| { |
| } |
| |
| N__MFDB__Add_template::N__MFDB__Add_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Add_template::N__MFDB__Add_template(const N__MFDB__Add& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Add_template::N__MFDB__Add_template(const OPTIONAL<N__MFDB__Add>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Add&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Add from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Add_template::N__MFDB__Add_template(const N__MFDB__Add_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Add_template::~N__MFDB__Add_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Add_template& N__MFDB__Add_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Add_template& N__MFDB__Add_template::operator=(const N__MFDB__Add& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Add_template& N__MFDB__Add_template::operator=(const OPTIONAL<N__MFDB__Add>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Add&)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 @IsobusNMMessageTypes.N_MFDB_Add."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Add_template& N__MFDB__Add_template::operator=(const N__MFDB__Add_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Add_template::match(const N__MFDB__Add& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.pgnEntries().is_bound()) return FALSE; |
| if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Add_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_pgnEntries.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Add_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_pgnEntries.is_value(); |
| } |
| |
| void N__MFDB__Add_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Add N__MFDB__Add_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 @IsobusNMMessageTypes.N_MFDB_Add."); |
| N__MFDB__Add ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_pgnEntries.is_bound()) { |
| ret_val.pgnEntries() = single_value->field_pgnEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Add_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Add_template[list_length]; |
| } |
| |
| N__MFDB__Add_template& N__MFDB__Add_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Add_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Add_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Add_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Add_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| return single_value->field_portPair; |
| } |
| |
| N__MFDB__Add_pgnEntries_template& N__MFDB__Add_template::pgnEntries() |
| { |
| set_specific(); |
| return single_value->field_pgnEntries; |
| } |
| |
| const N__MFDB__Add_pgnEntries_template& N__MFDB__Add_template::pgnEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| return single_value->field_pgnEntries; |
| } |
| |
| int N__MFDB__Add_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add 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 @IsobusNMMessageTypes.N_MFDB_Add 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 @IsobusNMMessageTypes.N_MFDB_Add containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Add_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Add_template::log_match(const N__MFDB__Add& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgnEntries"); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Add_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Add."); |
| } |
| } |
| |
| void N__MFDB__Add_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_pgnEntries.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 N__MFDB__Add_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 @IsobusNMMessageTypes.N_MFDB_Add."); |
| } |
| } |
| |
| void N__MFDB__Add_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: { |
| N__MFDB__Add_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Add has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Add: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Add"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Add_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add"); |
| single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Add"); |
| } |
| |
| boolean N__MFDB__Add_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Add_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__MFDB__Delete::N__MFDB__Delete() |
| { |
| } |
| |
| N__MFDB__Delete::N__MFDB__Delete(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const N__MFDB__Delete_pgnEntries& par_pgnEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_pgnEntries(par_pgnEntries) |
| { |
| } |
| |
| N__MFDB__Delete::N__MFDB__Delete(const N__MFDB__Delete& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| |
| void N__MFDB__Delete::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_pgnEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Delete::get_descriptor() const { return &N__MFDB__Delete_descr_; } |
| N__MFDB__Delete& N__MFDB__Delete::operator=(const N__MFDB__Delete& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Delete::operator==(const N__MFDB__Delete& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_pgnEntries==other_value.field_pgnEntries; |
| } |
| |
| boolean N__MFDB__Delete::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_pgnEntries.is_bound()); |
| } |
| boolean N__MFDB__Delete::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_pgnEntries.is_value(); |
| } |
| void N__MFDB__Delete::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Delete::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Delete has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Delete: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| } |
| } |
| |
| void N__MFDB__Delete::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Delete::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_pgnEntries.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Delete::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_pgnEntries.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Delete::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Delete::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Delete::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__MFDB__Delete_pgnEntries_descr_.raw->forceomit); |
| decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Delete_pgnEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Delete::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Delete_pgnEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Delete_pgnEntries_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Delete_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| N__MFDB__Delete_pgnEntries_template field_pgnEntries; |
| }; |
| |
| void N__MFDB__Delete_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_pgnEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Delete_template::copy_value(const N__MFDB__Delete& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.pgnEntries().is_bound()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Delete_template::copy_template(const N__MFDB__Delete_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Delete_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Delete_template::N__MFDB__Delete_template() |
| { |
| } |
| |
| N__MFDB__Delete_template::N__MFDB__Delete_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Delete_template::N__MFDB__Delete_template(const N__MFDB__Delete& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Delete_template::N__MFDB__Delete_template(const OPTIONAL<N__MFDB__Delete>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Delete&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Delete from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Delete_template::N__MFDB__Delete_template(const N__MFDB__Delete_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Delete_template::~N__MFDB__Delete_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const N__MFDB__Delete& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const OPTIONAL<N__MFDB__Delete>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Delete&)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 @IsobusNMMessageTypes.N_MFDB_Delete."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const N__MFDB__Delete_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Delete_template::match(const N__MFDB__Delete& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.pgnEntries().is_bound()) return FALSE; |
| if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Delete_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_pgnEntries.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Delete_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_pgnEntries.is_value(); |
| } |
| |
| void N__MFDB__Delete_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Delete N__MFDB__Delete_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 @IsobusNMMessageTypes.N_MFDB_Delete."); |
| N__MFDB__Delete ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_pgnEntries.is_bound()) { |
| ret_val.pgnEntries() = single_value->field_pgnEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Delete_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Delete_template[list_length]; |
| } |
| |
| N__MFDB__Delete_template& N__MFDB__Delete_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Delete_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Delete_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Delete_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Delete_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| return single_value->field_portPair; |
| } |
| |
| N__MFDB__Delete_pgnEntries_template& N__MFDB__Delete_template::pgnEntries() |
| { |
| set_specific(); |
| return single_value->field_pgnEntries; |
| } |
| |
| const N__MFDB__Delete_pgnEntries_template& N__MFDB__Delete_template::pgnEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| return single_value->field_pgnEntries; |
| } |
| |
| int N__MFDB__Delete_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete 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 @IsobusNMMessageTypes.N_MFDB_Delete 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 @IsobusNMMessageTypes.N_MFDB_Delete containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Delete_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Delete_template::log_match(const N__MFDB__Delete& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgnEntries"); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Delete_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Delete."); |
| } |
| } |
| |
| void N__MFDB__Delete_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_pgnEntries.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 N__MFDB__Delete_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 @IsobusNMMessageTypes.N_MFDB_Delete."); |
| } |
| } |
| |
| void N__MFDB__Delete_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: { |
| N__MFDB__Delete_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Delete has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Delete: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Delete_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Delete"); |
| } |
| |
| boolean N__MFDB__Delete_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Delete_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__MFDB__Clear::N__MFDB__Clear() |
| { |
| } |
| |
| N__MFDB__Clear::N__MFDB__Clear(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__MFDB__Clear::N__MFDB__Clear(const N__MFDB__Clear& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__MFDB__Clear::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Clear::get_descriptor() const { return &N__MFDB__Clear_descr_; } |
| N__MFDB__Clear& N__MFDB__Clear::operator=(const N__MFDB__Clear& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Clear::operator==(const N__MFDB__Clear& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__MFDB__Clear::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__MFDB__Clear::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__MFDB__Clear::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Clear::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Clear has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Clear: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| } |
| } |
| |
| void N__MFDB__Clear::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Clear::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Clear::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Clear::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Clear::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Clear::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__MFDB__Clear_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__MFDB__Clear_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__MFDB__Clear_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__MFDB__Clear_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__MFDB__Clear_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__MFDB__Clear_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__MFDB__Clear_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__MFDB__Clear_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__MFDB__Clear_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__MFDB__Clear_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__MFDB__Clear_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__MFDB__Clear_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Clear::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Clear_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Clear_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDB__Clear_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__MFDB__Clear_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__MFDB__Clear_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__MFDB__Clear_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__MFDB__Clear_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__MFDB__Clear_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__MFDB__Clear_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__MFDB__Clear_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__MFDB__Clear_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__MFDB__Clear_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Clear_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__MFDB__Clear_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Clear_template::copy_value(const N__MFDB__Clear& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Clear_template::copy_template(const N__MFDB__Clear_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Clear_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Clear_template::N__MFDB__Clear_template() |
| { |
| } |
| |
| N__MFDB__Clear_template::N__MFDB__Clear_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Clear_template::N__MFDB__Clear_template(const N__MFDB__Clear& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Clear_template::N__MFDB__Clear_template(const OPTIONAL<N__MFDB__Clear>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Clear&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Clear from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Clear_template::N__MFDB__Clear_template(const N__MFDB__Clear_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Clear_template::~N__MFDB__Clear_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const N__MFDB__Clear& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const OPTIONAL<N__MFDB__Clear>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Clear&)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 @IsobusNMMessageTypes.N_MFDB_Clear."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const N__MFDB__Clear_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Clear_template::match(const N__MFDB__Clear& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Clear_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Clear_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__MFDB__Clear_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Clear N__MFDB__Clear_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 @IsobusNMMessageTypes.N_MFDB_Clear."); |
| N__MFDB__Clear ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Clear_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Clear_template[list_length]; |
| } |
| |
| N__MFDB__Clear_template& N__MFDB__Clear_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Clear_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Clear_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Clear_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Clear_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__MFDB__Clear_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__MFDB__Clear_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__MFDB__Clear_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear 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 @IsobusNMMessageTypes.N_MFDB_Clear containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Clear_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Clear_template::log_match(const N__MFDB__Clear& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__MFDB__Clear_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_MFDB_Clear."); |
| } |
| } |
| |
| void N__MFDB__Clear_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__MFDB__Clear_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 @IsobusNMMessageTypes.N_MFDB_Clear."); |
| } |
| } |
| |
| void N__MFDB__Clear_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: { |
| N__MFDB__Clear_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Clear has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Clear: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Clear_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Clear"); |
| } |
| |
| boolean N__MFDB__Clear_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Clear_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__MFDB__Create__Entry::N__MFDB__Create__Entry() |
| { |
| } |
| |
| N__MFDB__Create__Entry::N__MFDB__Create__Entry(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const e__FilterMode& par_filterMode, |
| const N__MFDB__Create__Entry_pgnEntries& par_pgnEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_filterMode(par_filterMode), |
| field_pgnEntries(par_pgnEntries) |
| { |
| } |
| |
| N__MFDB__Create__Entry::N__MFDB__Create__Entry(const N__MFDB__Create__Entry& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| |
| void N__MFDB__Create__Entry::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_filterMode.clean_up(); |
| field_pgnEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDB__Create__Entry::get_descriptor() const { return &N__MFDB__Create__Entry_descr_; } |
| N__MFDB__Create__Entry& N__MFDB__Create__Entry::operator=(const N__MFDB__Create__Entry& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Create__Entry::operator==(const N__MFDB__Create__Entry& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_filterMode==other_value.field_filterMode |
| && field_pgnEntries==other_value.field_pgnEntries; |
| } |
| |
| boolean N__MFDB__Create__Entry::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_filterMode.is_bound()) |
| || (field_pgnEntries.is_bound()); |
| } |
| boolean N__MFDB__Create__Entry::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_filterMode.is_value() |
| && field_pgnEntries.is_value(); |
| } |
| void N__MFDB__Create__Entry::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| field_filterMode.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDB__Create__Entry::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Create_Entry has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Create_Entry: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| } |
| } |
| |
| void N__MFDB__Create__Entry::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (filterMode().is_bound()) filterMode().set_implicit_omit(); |
| if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit(); |
| } |
| |
| void N__MFDB__Create__Entry::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_filterMode.encode_text(text_buf); |
| field_pgnEntries.encode_text(text_buf); |
| } |
| |
| void N__MFDB__Create__Entry::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_filterMode.decode_text(text_buf); |
| field_pgnEntries.decode_text(text_buf); |
| } |
| |
| void N__MFDB__Create__Entry::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDB__Create__Entry::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDB__Create__Entry::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, e__FilterMode_descr_.raw->forceomit); |
| decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__MFDB__Create__Entry_pgnEntries_descr_.raw->forceomit); |
| decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Create__Entry_pgnEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDB__Create__Entry::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Create__Entry_pgnEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Create__Entry_pgnEntries_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDB__Create__Entry_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| e__FilterMode_template field_filterMode; |
| N__MFDB__Create__Entry_pgnEntries_template field_pgnEntries; |
| }; |
| |
| void N__MFDB__Create__Entry_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_filterMode = ANY_VALUE; |
| single_value->field_pgnEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDB__Create__Entry_template::copy_value(const N__MFDB__Create__Entry& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.filterMode().is_bound()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (other_value.pgnEntries().is_bound()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDB__Create__Entry_template::copy_template(const N__MFDB__Create__Entry_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDB__Create__Entry_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template() |
| { |
| } |
| |
| N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const OPTIONAL<N__MFDB__Create__Entry>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Create__Entry&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry from an unbound optional field."); |
| } |
| } |
| |
| N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDB__Create__Entry_template::~N__MFDB__Create__Entry_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const N__MFDB__Create__Entry& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const OPTIONAL<N__MFDB__Create__Entry>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDB__Create__Entry&)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 @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| } |
| return *this; |
| } |
| |
| N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const N__MFDB__Create__Entry_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDB__Create__Entry_template::match(const N__MFDB__Create__Entry& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.filterMode().is_bound()) return FALSE; |
| if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE; |
| if(!other_value.pgnEntries().is_bound()) return FALSE; |
| if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDB__Create__Entry_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_filterMode.is_bound() |
| |
| ||single_value->field_pgnEntries.is_bound() |
| ; |
| } |
| |
| boolean N__MFDB__Create__Entry_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_filterMode.is_value() |
| &&single_value->field_pgnEntries.is_value(); |
| } |
| |
| void N__MFDB__Create__Entry_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDB__Create__Entry N__MFDB__Create__Entry_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 @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| N__MFDB__Create__Entry ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_filterMode.is_bound()) { |
| ret_val.filterMode() = single_value->field_filterMode.valueof(); |
| } |
| if (single_value->field_pgnEntries.is_bound()) { |
| ret_val.pgnEntries() = single_value->field_pgnEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDB__Create__Entry_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDB__Create__Entry_template[list_length]; |
| } |
| |
| N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDB__Create__Entry_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDB__Create__Entry_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDB__Create__Entry_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDB__Create__Entry_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| return single_value->field_portPair; |
| } |
| |
| e__FilterMode_template& N__MFDB__Create__Entry_template::filterMode() |
| { |
| set_specific(); |
| return single_value->field_filterMode; |
| } |
| |
| const e__FilterMode_template& N__MFDB__Create__Entry_template::filterMode() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| return single_value->field_filterMode; |
| } |
| |
| N__MFDB__Create__Entry_pgnEntries_template& N__MFDB__Create__Entry_template::pgnEntries() |
| { |
| set_specific(); |
| return single_value->field_pgnEntries; |
| } |
| |
| const N__MFDB__Create__Entry_pgnEntries_template& N__MFDB__Create__Entry_template::pgnEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| return single_value->field_pgnEntries; |
| } |
| |
| int N__MFDB__Create__Entry_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry 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 @IsobusNMMessageTypes.N_MFDB_Create_Entry containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| } |
| return 0; |
| } |
| |
| void N__MFDB__Create__Entry_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDB__Create__Entry_template::log_match(const N__MFDB__Create__Entry& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".filterMode"); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgnEntries"); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Create__Entry_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_filterMode.encode_text(text_buf); |
| single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| } |
| } |
| |
| void N__MFDB__Create__Entry_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_filterMode.decode_text(text_buf); |
| single_value->field_pgnEntries.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 N__MFDB__Create__Entry_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 @IsobusNMMessageTypes.N_MFDB_Create_Entry."); |
| } |
| } |
| |
| void N__MFDB__Create__Entry_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: { |
| N__MFDB__Create__Entry_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDB_Create_Entry: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDB__Create__Entry_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| 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 : "@IsobusNMMessageTypes.N_MFDB_Create_Entry"); |
| } |
| |
| boolean N__MFDB__Create__Entry_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDB__Create__Entry_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| PGNEntry::PGNEntry() |
| { |
| } |
| |
| PGNEntry::PGNEntry(const INTEGER& par_maxTransferRate, |
| const INTEGER& par_pgn, |
| const NAME& par_name, |
| const OCTETSTRING& par_nameQualifier) |
| : field_maxTransferRate(par_maxTransferRate), |
| field_pgn(par_pgn), |
| field_name(par_name), |
| field_nameQualifier(par_nameQualifier) |
| { |
| } |
| |
| PGNEntry::PGNEntry(const PGNEntry& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PGNEntry."); |
| if (other_value.maxTransferRate().is_bound()) field_maxTransferRate = other_value.maxTransferRate(); |
| else field_maxTransferRate.clean_up(); |
| if (other_value.pgn().is_bound()) field_pgn = other_value.pgn(); |
| else field_pgn.clean_up(); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| if (other_value.nameQualifier().is_bound()) field_nameQualifier = other_value.nameQualifier(); |
| else field_nameQualifier.clean_up(); |
| } |
| |
| void PGNEntry::clean_up() |
| { |
| field_maxTransferRate.clean_up(); |
| field_pgn.clean_up(); |
| field_name.clean_up(); |
| field_nameQualifier.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* PGNEntry::get_descriptor() const { return &PGNEntry_descr_; } |
| PGNEntry& PGNEntry::operator=(const PGNEntry& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PGNEntry."); |
| if (other_value.maxTransferRate().is_bound()) field_maxTransferRate = other_value.maxTransferRate(); |
| else field_maxTransferRate.clean_up(); |
| if (other_value.pgn().is_bound()) field_pgn = other_value.pgn(); |
| else field_pgn.clean_up(); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| if (other_value.nameQualifier().is_bound()) field_nameQualifier = other_value.nameQualifier(); |
| else field_nameQualifier.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean PGNEntry::operator==(const PGNEntry& other_value) const |
| { |
| return field_maxTransferRate==other_value.field_maxTransferRate |
| && field_pgn==other_value.field_pgn |
| && field_name==other_value.field_name |
| && field_nameQualifier==other_value.field_nameQualifier; |
| } |
| |
| boolean PGNEntry::is_bound() const |
| { |
| return (field_maxTransferRate.is_bound()) |
| || (field_pgn.is_bound()) |
| || (field_name.is_bound()) |
| || (field_nameQualifier.is_bound()); |
| } |
| boolean PGNEntry::is_value() const |
| { |
| return field_maxTransferRate.is_value() |
| && field_pgn.is_value() |
| && field_name.is_value() |
| && field_nameQualifier.is_value(); |
| } |
| void PGNEntry::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ maxTransferRate := "); |
| field_maxTransferRate.log(); |
| TTCN_Logger::log_event_str(", pgn := "); |
| field_pgn.log(); |
| TTCN_Logger::log_event_str(", name := "); |
| field_name.log(); |
| TTCN_Logger::log_event_str(", nameQualifier := "); |
| field_nameQualifier.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void PGNEntry::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.PGNEntry has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) maxTransferRate().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nameQualifier().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "maxTransferRate")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| maxTransferRate().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgn")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgn().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameQualifier")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameQualifier().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PGNEntry: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.PGNEntry"); |
| } |
| } |
| |
| void PGNEntry::set_implicit_omit() |
| { |
| if (maxTransferRate().is_bound()) maxTransferRate().set_implicit_omit(); |
| if (pgn().is_bound()) pgn().set_implicit_omit(); |
| if (name().is_bound()) name().set_implicit_omit(); |
| if (nameQualifier().is_bound()) nameQualifier().set_implicit_omit(); |
| } |
| |
| void PGNEntry::encode_text(Text_Buf& text_buf) const |
| { |
| field_maxTransferRate.encode_text(text_buf); |
| field_pgn.encode_text(text_buf); |
| field_name.encode_text(text_buf); |
| field_nameQualifier.encode_text(text_buf); |
| } |
| |
| void PGNEntry::decode_text(Text_Buf& text_buf) |
| { |
| field_maxTransferRate.decode_text(text_buf); |
| field_pgn.decode_text(text_buf); |
| field_name.decode_text(text_buf); |
| field_nameQualifier.decode_text(text_buf); |
| } |
| |
| void PGNEntry::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void PGNEntry::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int PGNEntry::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, General__Types::INT1_descr_.raw->forceomit); |
| decoded_field_length = field_maxTransferRate.RAW_decode(General__Types::INT1_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, IsobusMessageTypes::PGN_descr_.raw->forceomit); |
| decoded_field_length = field_pgn.RAW_decode(IsobusMessageTypes::PGN_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_name.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT8_descr_.raw->forceomit); |
| decoded_field_length = field_nameQualifier.RAW_decode(General__Types::OCT8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int PGNEntry::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, General__Types::INT1_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IsobusMessageTypes::PGN_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT8_descr_.raw); |
| encoded_length += field_maxTransferRate.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_pgn.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_nameQualifier.RAW_encode(General__Types::OCT8_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct PGNEntry_template::single_value_struct { |
| INTEGER_template field_maxTransferRate; |
| INTEGER_template field_pgn; |
| NAME_template field_name; |
| OCTETSTRING_template field_nameQualifier; |
| }; |
| |
| void PGNEntry_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_maxTransferRate = ANY_VALUE; |
| single_value->field_pgn = ANY_VALUE; |
| single_value->field_name = ANY_VALUE; |
| single_value->field_nameQualifier = ANY_VALUE; |
| } |
| } |
| } |
| |
| void PGNEntry_template::copy_value(const PGNEntry& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.maxTransferRate().is_bound()) { |
| single_value->field_maxTransferRate = other_value.maxTransferRate(); |
| } else { |
| single_value->field_maxTransferRate.clean_up(); |
| } |
| if (other_value.pgn().is_bound()) { |
| single_value->field_pgn = other_value.pgn(); |
| } else { |
| single_value->field_pgn.clean_up(); |
| } |
| if (other_value.name().is_bound()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| if (other_value.nameQualifier().is_bound()) { |
| single_value->field_nameQualifier = other_value.nameQualifier(); |
| } else { |
| single_value->field_nameQualifier.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void PGNEntry_template::copy_template(const PGNEntry_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.maxTransferRate().get_selection()) { |
| single_value->field_maxTransferRate = other_value.maxTransferRate(); |
| } else { |
| single_value->field_maxTransferRate.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgn().get_selection()) { |
| single_value->field_pgn = other_value.pgn(); |
| } else { |
| single_value->field_pgn.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.nameQualifier().get_selection()) { |
| single_value->field_nameQualifier = other_value.nameQualifier(); |
| } else { |
| single_value->field_nameQualifier.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new PGNEntry_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| PGNEntry_template::PGNEntry_template() |
| { |
| } |
| |
| PGNEntry_template::PGNEntry_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| PGNEntry_template::PGNEntry_template(const PGNEntry& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| PGNEntry_template::PGNEntry_template(const OPTIONAL<PGNEntry>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PGNEntry&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.PGNEntry from an unbound optional field."); |
| } |
| } |
| |
| PGNEntry_template::PGNEntry_template(const PGNEntry_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| PGNEntry_template::~PGNEntry_template() |
| { |
| clean_up(); |
| } |
| |
| PGNEntry_template& PGNEntry_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| PGNEntry_template& PGNEntry_template::operator=(const PGNEntry& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| PGNEntry_template& PGNEntry_template::operator=(const OPTIONAL<PGNEntry>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PGNEntry&)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 @IsobusNMMessageTypes.PGNEntry."); |
| } |
| return *this; |
| } |
| |
| PGNEntry_template& PGNEntry_template::operator=(const PGNEntry_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean PGNEntry_template::match(const PGNEntry& 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.maxTransferRate().is_bound()) return FALSE; |
| if(!single_value->field_maxTransferRate.match(other_value.maxTransferRate(), legacy))return FALSE; |
| if(!other_value.pgn().is_bound()) return FALSE; |
| if(!single_value->field_pgn.match(other_value.pgn(), legacy))return FALSE; |
| if(!other_value.name().is_bound()) return FALSE; |
| if(!single_value->field_name.match(other_value.name(), legacy))return FALSE; |
| if(!other_value.nameQualifier().is_bound()) return FALSE; |
| if(!single_value->field_nameQualifier.match(other_value.nameQualifier(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry."); |
| } |
| return FALSE; |
| } |
| |
| boolean PGNEntry_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_maxTransferRate.is_bound() |
| |
| ||single_value->field_pgn.is_bound() |
| |
| ||single_value->field_name.is_bound() |
| |
| ||single_value->field_nameQualifier.is_bound() |
| ; |
| } |
| |
| boolean PGNEntry_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_maxTransferRate.is_value() |
| &&single_value->field_pgn.is_value() |
| &&single_value->field_name.is_value() |
| &&single_value->field_nameQualifier.is_value(); |
| } |
| |
| void PGNEntry_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| PGNEntry PGNEntry_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 @IsobusNMMessageTypes.PGNEntry."); |
| PGNEntry ret_val; |
| if (single_value->field_maxTransferRate.is_bound()) { |
| ret_val.maxTransferRate() = single_value->field_maxTransferRate.valueof(); |
| } |
| if (single_value->field_pgn.is_bound()) { |
| ret_val.pgn() = single_value->field_pgn.valueof(); |
| } |
| if (single_value->field_name.is_bound()) { |
| ret_val.name() = single_value->field_name.valueof(); |
| } |
| if (single_value->field_nameQualifier.is_bound()) { |
| ret_val.nameQualifier() = single_value->field_nameQualifier.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void PGNEntry_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PGNEntry."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new PGNEntry_template[list_length]; |
| } |
| |
| PGNEntry_template& PGNEntry_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PGNEntry."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PGNEntry."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& PGNEntry_template::maxTransferRate() |
| { |
| set_specific(); |
| return single_value->field_maxTransferRate; |
| } |
| |
| const INTEGER_template& PGNEntry_template::maxTransferRate() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field maxTransferRate of a non-specific template of type @IsobusNMMessageTypes.PGNEntry."); |
| return single_value->field_maxTransferRate; |
| } |
| |
| INTEGER_template& PGNEntry_template::pgn() |
| { |
| set_specific(); |
| return single_value->field_pgn; |
| } |
| |
| const INTEGER_template& PGNEntry_template::pgn() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgn of a non-specific template of type @IsobusNMMessageTypes.PGNEntry."); |
| return single_value->field_pgn; |
| } |
| |
| NAME_template& PGNEntry_template::name() |
| { |
| set_specific(); |
| return single_value->field_name; |
| } |
| |
| const NAME_template& PGNEntry_template::name() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.PGNEntry."); |
| return single_value->field_name; |
| } |
| |
| OCTETSTRING_template& PGNEntry_template::nameQualifier() |
| { |
| set_specific(); |
| return single_value->field_nameQualifier; |
| } |
| |
| const OCTETSTRING_template& PGNEntry_template::nameQualifier() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field nameQualifier of a non-specific template of type @IsobusNMMessageTypes.PGNEntry."); |
| return single_value->field_nameQualifier; |
| } |
| |
| int PGNEntry_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry 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 @IsobusNMMessageTypes.PGNEntry containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry."); |
| } |
| return 0; |
| } |
| |
| void PGNEntry_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ maxTransferRate := "); |
| single_value->field_maxTransferRate.log(); |
| TTCN_Logger::log_event_str(", pgn := "); |
| single_value->field_pgn.log(); |
| TTCN_Logger::log_event_str(", name := "); |
| single_value->field_name.log(); |
| TTCN_Logger::log_event_str(", nameQualifier := "); |
| single_value->field_nameQualifier.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void PGNEntry_template::log_match(const PGNEntry& 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_maxTransferRate.match(match_value.maxTransferRate(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".maxTransferRate"); |
| single_value->field_maxTransferRate.log_match(match_value.maxTransferRate(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgn.match(match_value.pgn(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgn"); |
| single_value->field_pgn.log_match(match_value.pgn(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_name.match(match_value.name(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".name"); |
| single_value->field_name.log_match(match_value.name(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_nameQualifier.match(match_value.nameQualifier(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".nameQualifier"); |
| single_value->field_nameQualifier.log_match(match_value.nameQualifier(), 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("{ maxTransferRate := "); |
| single_value->field_maxTransferRate.log_match(match_value.maxTransferRate(), legacy); |
| TTCN_Logger::log_event_str(", pgn := "); |
| single_value->field_pgn.log_match(match_value.pgn(), legacy); |
| TTCN_Logger::log_event_str(", name := "); |
| single_value->field_name.log_match(match_value.name(), legacy); |
| TTCN_Logger::log_event_str(", nameQualifier := "); |
| single_value->field_nameQualifier.log_match(match_value.nameQualifier(), 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 PGNEntry_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_maxTransferRate.encode_text(text_buf); |
| single_value->field_pgn.encode_text(text_buf); |
| single_value->field_name.encode_text(text_buf); |
| single_value->field_nameQualifier.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 @IsobusNMMessageTypes.PGNEntry."); |
| } |
| } |
| |
| void PGNEntry_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_maxTransferRate.decode_text(text_buf); |
| single_value->field_pgn.decode_text(text_buf); |
| single_value->field_name.decode_text(text_buf); |
| single_value->field_nameQualifier.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 PGNEntry_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 @IsobusNMMessageTypes.PGNEntry."); |
| } |
| } |
| |
| void PGNEntry_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: { |
| PGNEntry_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.PGNEntry has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) maxTransferRate().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nameQualifier().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "maxTransferRate")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| maxTransferRate().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgn")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgn().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameQualifier")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameQualifier().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PGNEntry: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.PGNEntry"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void PGNEntry_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_maxTransferRate.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry"); |
| single_value->field_pgn.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry"); |
| single_value->field_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry"); |
| single_value->field_nameQualifier.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry"); |
| 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 : "@IsobusNMMessageTypes.PGNEntry"); |
| } |
| |
| boolean PGNEntry_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean PGNEntry_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| |
| const PGNEntry N__MFDBNQ__Add_pgnEntries::UNBOUND_ELEM; |
| N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries() |
| { |
| val_ptr = NULL; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries(null_type) |
| { |
| val_ptr = new recordof_setof_struct; |
| val_ptr->ref_count = 1; |
| val_ptr->n_elements = 0; |
| val_ptr->value_elements = NULL; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries(const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries::~N__MFDBNQ__Add_pgnEntries() |
| { |
| clean_up(); |
| if (val_ptr != NULL) val_ptr = NULL; |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries::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."); |
| } |
| } |
| |
| N__MFDBNQ__Add_pgnEntries& N__MFDBNQ__Add_pgnEntries::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; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries& N__MFDBNQ__Add_pgnEntries::operator=(const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (this != &other_value) { |
| clean_up(); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| return *this; |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries::operator==(null_type) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return val_ptr->n_elements == 0 ; |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries::operator==(const N__MFDBNQ__Add_pgnEntries& other_value) const |
| { |
| if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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; |
| } |
| |
| PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 = (PGNEntry**)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 PGNEntry(*(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 PGNEntry; |
| } |
| return *val_ptr->value_elements[index_value]; |
| } |
| |
| PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](int index_value) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries using a negative index: %d.", index_value); |
| if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: 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 PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return (*this)[(int)index_value]; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator<<=(int rotate_count) const |
| { |
| return *this >>= (-rotate_count); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator<<=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate left operator."); |
| return *this >>= (int)(-rotate_count); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator>>=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate right operator."); |
| return *this >>= (int)rotate_count; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator>>=(int rotate_count) const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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; |
| N__MFDBNQ__Add_pgnEntries ret_val; |
| ret_val.set_size(val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new PGNEntry(*val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator+(const N__MFDBNQ__Add_pgnEntries& other_value) const |
| { |
| if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries concatenation."); |
| if (val_ptr->n_elements == 0) return other_value; |
| if (other_value.val_ptr->n_elements == 0) return *this; |
| N__MFDBNQ__Add_pgnEntries ret_val; |
| ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new PGNEntry(*val_ptr->value_elements[i]); |
| } |
| } |
| for (int i=0; i<other_value.val_ptr->n_elements; i++) { |
| if (other_value.val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new PGNEntry(*other_value.val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::substr(int index, int returncount) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries","element"); |
| N__MFDBNQ__Add_pgnEntries ret_val; |
| ret_val.set_size(returncount); |
| for (int i=0; i<returncount; i++) { |
| if (val_ptr->value_elements[i+index] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new PGNEntry(*val_ptr->value_elements[i+index]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& repl) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries","element"); |
| N__MFDBNQ__Add_pgnEntries 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 PGNEntry(*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 PGNEntry(*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 PGNEntry(*val_ptr->value_elements[index+i+len]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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 = (PGNEntry**)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 PGNEntry(*(val_ptr->value_elements[elem_count])); |
| } |
| } |
| clean_up(); |
| val_ptr = new_val_ptr; |
| } |
| if (new_size > val_ptr->n_elements) { |
| val_ptr->value_elements = (PGNEntry**)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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: %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 = (PGNEntry**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); |
| val_ptr->n_elements = new_size; |
| } |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::size_of() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return val_ptr->n_elements; |
| } |
| |
| int N__MFDBNQ__Add_pgnEntries::lengthof() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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 N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if (curr->get_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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| (*this)[curr->get_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", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| } |
| 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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if ((curr->get_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", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| } |
| break; |
| default: |
| TTCN_error("Internal error: Unknown operation type."); |
| } |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::encode_text(Text_Buf& text_buf) const |
| { |
| if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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 N__MFDBNQ__Add_pgnEntries::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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| val_ptr->value_elements = (PGNEntry**)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 PGNEntry; |
| val_ptr->value_elements[elem_count]->decode_text(text_buf); |
| } |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDBNQ__Add_pgnEntries::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean /*no_err*/, int sel_field, boolean first_call, const RAW_Force_Omit*){ |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int decoded_field_length=0; |
| size_t start_of_field=0; |
| if(first_call) { |
| clean_up(); |
| val_ptr=new recordof_setof_struct; |
| val_ptr->ref_count=1; |
| val_ptr->n_elements=0; |
| val_ptr->value_elements=NULL; |
| } |
| int start_field=val_ptr->n_elements; |
| if(p_td.raw->fieldlength || sel_field!=-1){ |
| int a=0; |
| if(sel_field==-1) sel_field=p_td.raw->fieldlength; |
| for(a=0;a<sel_field;a++){ |
| decoded_field_length=(*this)[a+start_field].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| } |
| if(a==0) val_ptr->n_elements=0; |
| } else { |
| if(limit==0){ |
| if(!first_call) return -1; |
| val_ptr->n_elements=0; |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| int a=start_field; |
| while(limit>0){ |
| start_of_field=p_buf.get_pos_bit(); |
| decoded_field_length=(*this)[a].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0){ |
| delete &(*this)[a]; |
| val_ptr->n_elements--; |
| p_buf.set_pos_bit(start_of_field); |
| if(a>start_field){ |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } else return -1; |
| } |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| a++; |
| } |
| } |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| |
| int N__MFDBNQ__Add_pgnEntries::RAW_encode(const TTCN_Typedescriptor_t& p_td,RAW_enc_tree& myleaf) const{ |
| int encoded_length=0; |
| int encoded_num_of_records=p_td.raw->fieldlength?smaller(val_ptr->n_elements, p_td.raw->fieldlength):val_ptr->n_elements; |
| myleaf.isleaf=FALSE; |
| myleaf.rec_of=TRUE; |
| myleaf.body.node.num_of_nodes=encoded_num_of_records; |
| myleaf.body.node.nodes=init_nodes_of_enc_tree(encoded_num_of_records); |
| for(int a=0;a<encoded_num_of_records;a++){ |
| myleaf.body.node.nodes[a]=new RAW_enc_tree(TRUE,&myleaf,&(myleaf.curr_pos),a,p_td.oftype_descr->raw); |
| encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); |
| } |
| return myleaf.length=encoded_length; |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_template::copy_value(const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries with an unbound value."); |
| single_value.n_elements = other_value.size_of(); |
| single_value.value_elements = (PGNEntry_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 PGNEntry_template(other_value[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new PGNEntry_template; |
| } |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_template::copy_template(const N__MFDBNQ__Add_pgnEntries_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 = (PGNEntry_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 PGNEntry_template(*other_value.single_value.value_elements[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new PGNEntry_template; |
| } |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDBNQ__Add_pgnEntries_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__MFDBNQ__Add_pgnEntries*)value_ptr)[value_index], legacy); |
| else return ((const N__MFDBNQ__Add_pgnEntries_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template() |
| { |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(template_sel other_value) |
| : Record_Of_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(null_type) |
| : Record_Of_Template(SPECIFIC_VALUE) |
| { |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDBNQ__Add_pgnEntries&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries from an unbound optional field."); |
| } |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries_template& other_value) |
| : Record_Of_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template::~N__MFDBNQ__Add_pgnEntries_template() |
| { |
| clean_up(); |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_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: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(null_type) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDBNQ__Add_pgnEntries&)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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| } |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const N__MFDBNQ__Add_pgnEntries_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| break; |
| } |
| return *single_value.value_elements[index_value]; |
| } |
| |
| PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](int index_value) const |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries using a negative index: %d.", index_value); |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: 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 PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return (*this)[(int)index_value]; |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_template::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| 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 = (PGNEntry_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 PGNEntry_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 PGNEntry_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 = (PGNEntry_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); |
| single_value.n_elements = new_size; |
| } |
| } |
| |
| int N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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; i<elem_count; i++) { |
| switch (single_value.value_elements[i]->get_selection()) { |
| case OMIT_VALUE: |
| TTCN_error("Performing %sof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries containing complemented list.", op_name); |
| default: |
| TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.", op_name); |
| } |
| return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_template::match(const N__MFDBNQ__Add_pgnEntries& 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; |
| default: |
| TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_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; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| N__MFDBNQ__Add_pgnEntries 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; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_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); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_template::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_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()); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_template::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& 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 N__MFDBNQ__Add_pgnEntries_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| clean_up(); |
| switch (template_type) { |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDBNQ__Add_pgnEntries_template[list_length]; |
| break; |
| default: |
| TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| } |
| set_selection(template_type); |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_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 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; |
| default: |
| log_generic(); |
| } |
| log_restricted(); |
| log_ifpresent(); |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_template::log_match(const N__MFDBNQ__Add_pgnEntries& 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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| } |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| single_value.value_elements = (PGNEntry_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 PGNEntry_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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| } |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_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: { |
| N__MFDBNQ__Add_pgnEntries_template temp; |
| temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = temp; |
| break; } |
| case Module_Param::MP_Indexed_List: |
| if (template_selection!=SPECIFIC_VALUE) set_size(0); |
| for (size_t p_i=0; p_i<param.get_size(); ++p_i) { |
| (*this)[(int)(param.get_elem(p_i)->get_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_i<param.get_size(); ++p_i) { |
| switch (param.get_elem(p_i)->get_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_i<param_i->get_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; |
| default: |
| param.type_error("record of template", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| set_length_range(param); |
| } |
| |
| void N__MFDBNQ__Add_pgnEntries_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; i<single_value.n_elements; i++) single_value.value_elements[i]->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| 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 : "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries"); |
| } |
| |
| boolean N__MFDBNQ__Add_pgnEntries_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); |
| } |
| } |
| N__MFDBNQ__Add::N__MFDBNQ__Add() |
| { |
| } |
| |
| N__MFDBNQ__Add::N__MFDBNQ__Add(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const e__FilterMode& par_filterMode, |
| const OCTETSTRING& par_reserved4, |
| const N__MFDBNQ__Add_pgnEntries& par_pgnEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_filterMode(par_filterMode), |
| field_reserved4(par_reserved4), |
| field_pgnEntries(par_pgnEntries) |
| { |
| } |
| |
| N__MFDBNQ__Add::N__MFDBNQ__Add(const N__MFDBNQ__Add& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| |
| void N__MFDBNQ__Add::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_filterMode.clean_up(); |
| field_reserved4.clean_up(); |
| field_pgnEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__MFDBNQ__Add::get_descriptor() const { return &N__MFDBNQ__Add_descr_; } |
| N__MFDBNQ__Add& N__MFDBNQ__Add::operator=(const N__MFDBNQ__Add& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode(); |
| else field_filterMode.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries(); |
| else field_pgnEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDBNQ__Add::operator==(const N__MFDBNQ__Add& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_filterMode==other_value.field_filterMode |
| && field_reserved4==other_value.field_reserved4 |
| && field_pgnEntries==other_value.field_pgnEntries; |
| } |
| |
| boolean N__MFDBNQ__Add::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_filterMode.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_pgnEntries.is_bound()); |
| } |
| boolean N__MFDBNQ__Add::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_filterMode.is_value() |
| && field_reserved4.is_value() |
| && field_pgnEntries.is_value(); |
| } |
| void N__MFDBNQ__Add::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| field_filterMode.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__MFDBNQ__Add::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 (5<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_MFDBNQ_Add has 5 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(4)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDBNQ_Add: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| } |
| } |
| |
| void N__MFDBNQ__Add::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (filterMode().is_bound()) filterMode().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit(); |
| } |
| |
| void N__MFDBNQ__Add::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_filterMode.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_pgnEntries.encode_text(text_buf); |
| } |
| |
| void N__MFDBNQ__Add::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_filterMode.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_pgnEntries.decode_text(text_buf); |
| } |
| |
| void N__MFDBNQ__Add::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__MFDBNQ__Add::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__MFDBNQ__Add::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, e__FilterMode_descr_.raw->forceomit); |
| decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__MFDBNQ__Add_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__MFDBNQ__Add_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__MFDBNQ__Add_pgnEntries_descr_.raw->forceomit); |
| decoded_field_length = field_pgnEntries.RAW_decode(N__MFDBNQ__Add_pgnEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__MFDBNQ__Add::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 5; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(5); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDBNQ__Add_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDBNQ__Add_pgnEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__MFDBNQ__Add_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_pgnEntries.RAW_encode(N__MFDBNQ__Add_pgnEntries_descr_, *myleaf.body.node.nodes[4]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__MFDBNQ__Add_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| e__FilterMode_template field_filterMode; |
| OCTETSTRING_template field_reserved4; |
| N__MFDBNQ__Add_pgnEntries_template field_pgnEntries; |
| }; |
| |
| void N__MFDBNQ__Add_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_filterMode = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_pgnEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__MFDBNQ__Add_template::copy_value(const N__MFDBNQ__Add& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.filterMode().is_bound()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.pgnEntries().is_bound()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__MFDBNQ__Add_template::copy_template(const N__MFDBNQ__Add_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) { |
| single_value->field_filterMode = other_value.filterMode(); |
| } else { |
| single_value->field_filterMode.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) { |
| single_value->field_pgnEntries = other_value.pgnEntries(); |
| } else { |
| single_value->field_pgnEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__MFDBNQ__Add_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__MFDBNQ__Add_template::N__MFDBNQ__Add_template() |
| { |
| } |
| |
| N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const N__MFDBNQ__Add& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const OPTIONAL<N__MFDBNQ__Add>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDBNQ__Add&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add from an unbound optional field."); |
| } |
| } |
| |
| N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const N__MFDBNQ__Add_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__MFDBNQ__Add_template::~N__MFDBNQ__Add_template() |
| { |
| clean_up(); |
| } |
| |
| N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const N__MFDBNQ__Add& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const OPTIONAL<N__MFDBNQ__Add>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__MFDBNQ__Add&)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 @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| } |
| return *this; |
| } |
| |
| N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const N__MFDBNQ__Add_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__MFDBNQ__Add_template::match(const N__MFDBNQ__Add& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.filterMode().is_bound()) return FALSE; |
| if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.pgnEntries().is_bound()) return FALSE; |
| if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__MFDBNQ__Add_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_filterMode.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_pgnEntries.is_bound() |
| ; |
| } |
| |
| boolean N__MFDBNQ__Add_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_filterMode.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_pgnEntries.is_value(); |
| } |
| |
| void N__MFDBNQ__Add_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__MFDBNQ__Add N__MFDBNQ__Add_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 @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| N__MFDBNQ__Add ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_filterMode.is_bound()) { |
| ret_val.filterMode() = single_value->field_filterMode.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_pgnEntries.is_bound()) { |
| ret_val.pgnEntries() = single_value->field_pgnEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__MFDBNQ__Add_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__MFDBNQ__Add_template[list_length]; |
| } |
| |
| N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__MFDBNQ__Add_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__MFDBNQ__Add_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__MFDBNQ__Add_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__MFDBNQ__Add_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return single_value->field_portPair; |
| } |
| |
| e__FilterMode_template& N__MFDBNQ__Add_template::filterMode() |
| { |
| set_specific(); |
| return single_value->field_filterMode; |
| } |
| |
| const e__FilterMode_template& N__MFDBNQ__Add_template::filterMode() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return single_value->field_filterMode; |
| } |
| |
| OCTETSTRING_template& N__MFDBNQ__Add_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__MFDBNQ__Add_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return single_value->field_reserved4; |
| } |
| |
| N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_template::pgnEntries() |
| { |
| set_specific(); |
| return single_value->field_pgnEntries; |
| } |
| |
| const N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_template::pgnEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| return single_value->field_pgnEntries; |
| } |
| |
| int N__MFDBNQ__Add_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 5; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add 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 @IsobusNMMessageTypes.N_MFDBNQ_Add containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| } |
| return 0; |
| } |
| |
| void N__MFDBNQ__Add_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__MFDBNQ__Add_template::log_match(const N__MFDBNQ__Add& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".filterMode"); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".pgnEntries"); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", filterMode := "); |
| single_value->field_filterMode.log_match(match_value.filterMode(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", pgnEntries := "); |
| single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDBNQ__Add_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_filterMode.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| } |
| } |
| |
| void N__MFDBNQ__Add_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_filterMode.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_pgnEntries.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 N__MFDBNQ__Add_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 @IsobusNMMessageTypes.N_MFDBNQ_Add."); |
| } |
| } |
| |
| void N__MFDBNQ__Add_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: { |
| N__MFDBNQ__Add_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (5<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_MFDBNQ_Add has 5 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().set_param(*param.get_elem(4)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "filterMode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| filterMode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "pgnEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| pgnEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_MFDBNQ_Add: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__MFDBNQ__Add_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| 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 : "@IsobusNMMessageTypes.N_MFDBNQ_Add"); |
| } |
| |
| boolean N__MFDBNQ__Add_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__MFDBNQ__Add_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| PortNibble::PortNibble() |
| { |
| } |
| |
| PortNibble::PortNibble(const e__PortNumber& par_portNumber, |
| const HEXSTRING& par_reserved) |
| : field_portNumber(par_portNumber), |
| field_reserved(par_reserved) |
| { |
| } |
| |
| PortNibble::PortNibble(const PortNibble& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PortNibble."); |
| if (other_value.portNumber().is_bound()) field_portNumber = other_value.portNumber(); |
| else field_portNumber.clean_up(); |
| if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); |
| else field_reserved.clean_up(); |
| } |
| |
| void PortNibble::clean_up() |
| { |
| field_portNumber.clean_up(); |
| field_reserved.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* PortNibble::get_descriptor() const { return &PortNibble_descr_; } |
| PortNibble& PortNibble::operator=(const PortNibble& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PortNibble."); |
| if (other_value.portNumber().is_bound()) field_portNumber = other_value.portNumber(); |
| else field_portNumber.clean_up(); |
| if (other_value.reserved().is_bound()) field_reserved = other_value.reserved(); |
| else field_reserved.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean PortNibble::operator==(const PortNibble& other_value) const |
| { |
| return field_portNumber==other_value.field_portNumber |
| && field_reserved==other_value.field_reserved; |
| } |
| |
| boolean PortNibble::is_bound() const |
| { |
| return (field_portNumber.is_bound()) |
| || (field_reserved.is_bound()); |
| } |
| boolean PortNibble::is_value() const |
| { |
| return field_portNumber.is_value() |
| && field_reserved.is_value(); |
| } |
| void PortNibble::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ portNumber := "); |
| field_portNumber.log(); |
| TTCN_Logger::log_event_str(", reserved := "); |
| field_reserved.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void PortNibble::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.PortNibble has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) portNumber().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portNumber")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portNumber().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PortNibble: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.PortNibble"); |
| } |
| } |
| |
| void PortNibble::set_implicit_omit() |
| { |
| if (portNumber().is_bound()) portNumber().set_implicit_omit(); |
| if (reserved().is_bound()) reserved().set_implicit_omit(); |
| } |
| |
| void PortNibble::encode_text(Text_Buf& text_buf) const |
| { |
| field_portNumber.encode_text(text_buf); |
| field_reserved.encode_text(text_buf); |
| } |
| |
| void PortNibble::decode_text(Text_Buf& text_buf) |
| { |
| field_portNumber.decode_text(text_buf); |
| field_reserved.decode_text(text_buf); |
| } |
| |
| void PortNibble::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void PortNibble::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int PortNibble::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, e__PortNumber_descr_.raw->forceomit); |
| decoded_field_length = field_portNumber.RAW_decode(e__PortNumber_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_reserved_descr_.raw->forceomit); |
| decoded_field_length = field_reserved.RAW_decode(PortNibble_reserved_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int PortNibble::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, e__PortNumber_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_reserved_descr_.raw); |
| encoded_length += field_portNumber.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_reserved.RAW_encode(PortNibble_reserved_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct PortNibble_template::single_value_struct { |
| e__PortNumber_template field_portNumber; |
| HEXSTRING_template field_reserved; |
| }; |
| |
| void PortNibble_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_portNumber = ANY_VALUE; |
| single_value->field_reserved = ANY_VALUE; |
| } |
| } |
| } |
| |
| void PortNibble_template::copy_value(const PortNibble& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.portNumber().is_bound()) { |
| single_value->field_portNumber = other_value.portNumber(); |
| } else { |
| single_value->field_portNumber.clean_up(); |
| } |
| if (other_value.reserved().is_bound()) { |
| single_value->field_reserved = other_value.reserved(); |
| } else { |
| single_value->field_reserved.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void PortNibble_template::copy_template(const PortNibble_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.portNumber().get_selection()) { |
| single_value->field_portNumber = other_value.portNumber(); |
| } else { |
| single_value->field_portNumber.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) { |
| single_value->field_reserved = other_value.reserved(); |
| } else { |
| single_value->field_reserved.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new PortNibble_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| PortNibble_template::PortNibble_template() |
| { |
| } |
| |
| PortNibble_template::PortNibble_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| PortNibble_template::PortNibble_template(const PortNibble& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| PortNibble_template::PortNibble_template(const OPTIONAL<PortNibble>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PortNibble&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.PortNibble from an unbound optional field."); |
| } |
| } |
| |
| PortNibble_template::PortNibble_template(const PortNibble_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| PortNibble_template::~PortNibble_template() |
| { |
| clean_up(); |
| } |
| |
| PortNibble_template& PortNibble_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| PortNibble_template& PortNibble_template::operator=(const PortNibble& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| PortNibble_template& PortNibble_template::operator=(const OPTIONAL<PortNibble>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const PortNibble&)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 @IsobusNMMessageTypes.PortNibble."); |
| } |
| return *this; |
| } |
| |
| PortNibble_template& PortNibble_template::operator=(const PortNibble_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean PortNibble_template::match(const PortNibble& 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.portNumber().is_bound()) return FALSE; |
| if(!single_value->field_portNumber.match(other_value.portNumber(), legacy))return FALSE; |
| if(!other_value.reserved().is_bound()) return FALSE; |
| if(!single_value->field_reserved.match(other_value.reserved(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble."); |
| } |
| return FALSE; |
| } |
| |
| boolean PortNibble_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_portNumber.is_bound() |
| |
| ||single_value->field_reserved.is_bound() |
| ; |
| } |
| |
| boolean PortNibble_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_portNumber.is_value() |
| &&single_value->field_reserved.is_value(); |
| } |
| |
| void PortNibble_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| PortNibble PortNibble_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 @IsobusNMMessageTypes.PortNibble."); |
| PortNibble ret_val; |
| if (single_value->field_portNumber.is_bound()) { |
| ret_val.portNumber() = single_value->field_portNumber.valueof(); |
| } |
| if (single_value->field_reserved.is_bound()) { |
| ret_val.reserved() = single_value->field_reserved.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void PortNibble_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PortNibble."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new PortNibble_template[list_length]; |
| } |
| |
| PortNibble_template& PortNibble_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PortNibble."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PortNibble."); |
| return value_list.list_value[list_index]; |
| } |
| |
| e__PortNumber_template& PortNibble_template::portNumber() |
| { |
| set_specific(); |
| return single_value->field_portNumber; |
| } |
| |
| const e__PortNumber_template& PortNibble_template::portNumber() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portNumber of a non-specific template of type @IsobusNMMessageTypes.PortNibble."); |
| return single_value->field_portNumber; |
| } |
| |
| HEXSTRING_template& PortNibble_template::reserved() |
| { |
| set_specific(); |
| return single_value->field_reserved; |
| } |
| |
| const HEXSTRING_template& PortNibble_template::reserved() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved of a non-specific template of type @IsobusNMMessageTypes.PortNibble."); |
| return single_value->field_reserved; |
| } |
| |
| int PortNibble_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble 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 @IsobusNMMessageTypes.PortNibble 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 @IsobusNMMessageTypes.PortNibble containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble."); |
| } |
| return 0; |
| } |
| |
| void PortNibble_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ portNumber := "); |
| single_value->field_portNumber.log(); |
| TTCN_Logger::log_event_str(", reserved := "); |
| single_value->field_reserved.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void PortNibble_template::log_match(const PortNibble& 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_portNumber.match(match_value.portNumber(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portNumber"); |
| single_value->field_portNumber.log_match(match_value.portNumber(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved.match(match_value.reserved(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved"); |
| single_value->field_reserved.log_match(match_value.reserved(), 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("{ portNumber := "); |
| single_value->field_portNumber.log_match(match_value.portNumber(), legacy); |
| TTCN_Logger::log_event_str(", reserved := "); |
| single_value->field_reserved.log_match(match_value.reserved(), 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 PortNibble_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_portNumber.encode_text(text_buf); |
| single_value->field_reserved.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 @IsobusNMMessageTypes.PortNibble."); |
| } |
| } |
| |
| void PortNibble_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_portNumber.decode_text(text_buf); |
| single_value->field_reserved.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 PortNibble_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 @IsobusNMMessageTypes.PortNibble."); |
| } |
| } |
| |
| void PortNibble_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: { |
| PortNibble_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.PortNibble has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) portNumber().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portNumber")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portNumber().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.PortNibble: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.PortNibble"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void PortNibble_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_portNumber.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortNibble"); |
| single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortNibble"); |
| 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 : "@IsobusNMMessageTypes.PortNibble"); |
| } |
| |
| boolean PortNibble_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean PortNibble_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__NT__Request::N__NT__Request() |
| { |
| } |
| |
| N__NT__Request::N__NT__Request(const INTEGER& par_msgFunction, |
| const PortNibble& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__NT__Request::N__NT__Request(const N__NT__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NT_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__NT__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__NT__Request::get_descriptor() const { return &N__NT__Request_descr_; } |
| N__NT__Request& N__NT__Request::operator=(const N__NT__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NT_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__NT__Request::operator==(const N__NT__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__NT__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__NT__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__NT__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__NT__Request::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_NT_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NT_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_NT_Request"); |
| } |
| } |
| |
| void N__NT__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__NT__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__NT__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__NT__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__NT__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__NT__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortNibble_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__NT__Request_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__NT__Request_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__NT__Request_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__NT__Request_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__NT__Request_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__NT__Request_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__NT__Request_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__NT__Request_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__NT__Request_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__NT__Request_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__NT__Request_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__NT__Request_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__NT__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NT__Request_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NT__Request_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__NT__Request_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__NT__Request_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__NT__Request_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__NT__Request_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__NT__Request_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__NT__Request_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__NT__Request_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__NT__Request_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__NT__Request_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__NT__Request_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__NT__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortNibble_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__NT__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__NT__Request_template::copy_value(const N__NT__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__NT__Request_template::copy_template(const N__NT__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__NT__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__NT__Request_template::N__NT__Request_template() |
| { |
| } |
| |
| N__NT__Request_template::N__NT__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__NT__Request_template::N__NT__Request_template(const N__NT__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__NT__Request_template::N__NT__Request_template(const OPTIONAL<N__NT__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NT__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NT_Request from an unbound optional field."); |
| } |
| } |
| |
| N__NT__Request_template::N__NT__Request_template(const N__NT__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__NT__Request_template::~N__NT__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__NT__Request_template& N__NT__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__NT__Request_template& N__NT__Request_template::operator=(const N__NT__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__NT__Request_template& N__NT__Request_template::operator=(const OPTIONAL<N__NT__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NT__Request&)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 @IsobusNMMessageTypes.N_NT_Request."); |
| } |
| return *this; |
| } |
| |
| N__NT__Request_template& N__NT__Request_template::operator=(const N__NT__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__NT__Request_template::match(const N__NT__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__NT__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__NT__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__NT__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__NT__Request N__NT__Request_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 @IsobusNMMessageTypes.N_NT_Request."); |
| N__NT__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__NT__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NT_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__NT__Request_template[list_length]; |
| } |
| |
| N__NT__Request_template& N__NT__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NT_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__NT__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__NT__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortNibble_template& N__NT__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortNibble_template& N__NT__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__NT__Request_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__NT__Request_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__NT__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request 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 @IsobusNMMessageTypes.N_NT_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request."); |
| } |
| return 0; |
| } |
| |
| void N__NT__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__NT__Request_template::log_match(const N__NT__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__NT__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_NT_Request."); |
| } |
| } |
| |
| void N__NT__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__NT__Request_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 @IsobusNMMessageTypes.N_NT_Request."); |
| } |
| } |
| |
| void N__NT__Request_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: { |
| N__NT__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_NT_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NT_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_NT_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__NT__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request"); |
| 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 : "@IsobusNMMessageTypes.N_NT_Request"); |
| } |
| |
| boolean N__NT__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__NT__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__NT__Response::N__NT__Response() |
| { |
| } |
| |
| N__NT__Response::N__NT__Response(const INTEGER& par_msgFunction, |
| const PortNibble& par_portPair, |
| const N__NT__Response_SourceAddressEntries& par_SourceAddressEntries) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_SourceAddressEntries(par_SourceAddressEntries) |
| { |
| } |
| |
| N__NT__Response::N__NT__Response(const N__NT__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NT_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.SourceAddressEntries().is_bound()) field_SourceAddressEntries = other_value.SourceAddressEntries(); |
| else field_SourceAddressEntries.clean_up(); |
| } |
| |
| void N__NT__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_SourceAddressEntries.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__NT__Response::get_descriptor() const { return &N__NT__Response_descr_; } |
| N__NT__Response& N__NT__Response::operator=(const N__NT__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NT_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.SourceAddressEntries().is_bound()) field_SourceAddressEntries = other_value.SourceAddressEntries(); |
| else field_SourceAddressEntries.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__NT__Response::operator==(const N__NT__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_SourceAddressEntries==other_value.field_SourceAddressEntries; |
| } |
| |
| boolean N__NT__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_SourceAddressEntries.is_bound()); |
| } |
| boolean N__NT__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_SourceAddressEntries.is_value(); |
| } |
| void N__NT__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", SourceAddressEntries := "); |
| field_SourceAddressEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__NT__Response::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_NT_Response has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) SourceAddressEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "SourceAddressEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| SourceAddressEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NT_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_NT_Response"); |
| } |
| } |
| |
| void N__NT__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (SourceAddressEntries().is_bound()) SourceAddressEntries().set_implicit_omit(); |
| } |
| |
| void N__NT__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_SourceAddressEntries.encode_text(text_buf); |
| } |
| |
| void N__NT__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_SourceAddressEntries.decode_text(text_buf); |
| } |
| |
| void N__NT__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__NT__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__NT__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortNibble_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__NT__Response_SourceAddressEntries_descr_.raw->forceomit); |
| decoded_field_length = field_SourceAddressEntries.RAW_decode(N__NT__Response_SourceAddressEntries_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__NT__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NT__Response_SourceAddressEntries_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_SourceAddressEntries.RAW_encode(N__NT__Response_SourceAddressEntries_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__NT__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortNibble_template field_portPair; |
| N__NT__Response_SourceAddressEntries_template field_SourceAddressEntries; |
| }; |
| |
| void N__NT__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_SourceAddressEntries = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__NT__Response_template::copy_value(const N__NT__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.SourceAddressEntries().is_bound()) { |
| single_value->field_SourceAddressEntries = other_value.SourceAddressEntries(); |
| } else { |
| single_value->field_SourceAddressEntries.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__NT__Response_template::copy_template(const N__NT__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.SourceAddressEntries().get_selection()) { |
| single_value->field_SourceAddressEntries = other_value.SourceAddressEntries(); |
| } else { |
| single_value->field_SourceAddressEntries.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__NT__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__NT__Response_template::N__NT__Response_template() |
| { |
| } |
| |
| N__NT__Response_template::N__NT__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__NT__Response_template::N__NT__Response_template(const N__NT__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__NT__Response_template::N__NT__Response_template(const OPTIONAL<N__NT__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NT__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NT_Response from an unbound optional field."); |
| } |
| } |
| |
| N__NT__Response_template::N__NT__Response_template(const N__NT__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__NT__Response_template::~N__NT__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__NT__Response_template& N__NT__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__NT__Response_template& N__NT__Response_template::operator=(const N__NT__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__NT__Response_template& N__NT__Response_template::operator=(const OPTIONAL<N__NT__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NT__Response&)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 @IsobusNMMessageTypes.N_NT_Response."); |
| } |
| return *this; |
| } |
| |
| N__NT__Response_template& N__NT__Response_template::operator=(const N__NT__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__NT__Response_template::match(const N__NT__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.SourceAddressEntries().is_bound()) return FALSE; |
| if(!single_value->field_SourceAddressEntries.match(other_value.SourceAddressEntries(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__NT__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_SourceAddressEntries.is_bound() |
| ; |
| } |
| |
| boolean N__NT__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_SourceAddressEntries.is_value(); |
| } |
| |
| void N__NT__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__NT__Response N__NT__Response_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 @IsobusNMMessageTypes.N_NT_Response."); |
| N__NT__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_SourceAddressEntries.is_bound()) { |
| ret_val.SourceAddressEntries() = single_value->field_SourceAddressEntries.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__NT__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NT_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__NT__Response_template[list_length]; |
| } |
| |
| N__NT__Response_template& N__NT__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NT_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NT_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__NT__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__NT__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortNibble_template& N__NT__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortNibble_template& N__NT__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response."); |
| return single_value->field_portPair; |
| } |
| |
| N__NT__Response_SourceAddressEntries_template& N__NT__Response_template::SourceAddressEntries() |
| { |
| set_specific(); |
| return single_value->field_SourceAddressEntries; |
| } |
| |
| const N__NT__Response_SourceAddressEntries_template& N__NT__Response_template::SourceAddressEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field SourceAddressEntries of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response."); |
| return single_value->field_SourceAddressEntries; |
| } |
| |
| int N__NT__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response 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 @IsobusNMMessageTypes.N_NT_Response 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 @IsobusNMMessageTypes.N_NT_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response."); |
| } |
| return 0; |
| } |
| |
| void N__NT__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", SourceAddressEntries := "); |
| single_value->field_SourceAddressEntries.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__NT__Response_template::log_match(const N__NT__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_SourceAddressEntries.match(match_value.SourceAddressEntries(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".SourceAddressEntries"); |
| single_value->field_SourceAddressEntries.log_match(match_value.SourceAddressEntries(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", SourceAddressEntries := "); |
| single_value->field_SourceAddressEntries.log_match(match_value.SourceAddressEntries(), 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 N__NT__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_SourceAddressEntries.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 @IsobusNMMessageTypes.N_NT_Response."); |
| } |
| } |
| |
| void N__NT__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_SourceAddressEntries.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 N__NT__Response_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 @IsobusNMMessageTypes.N_NT_Response."); |
| } |
| } |
| |
| void N__NT__Response_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: { |
| N__NT__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_NT_Response has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) SourceAddressEntries().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "SourceAddressEntries")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| SourceAddressEntries().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NT_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_NT_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__NT__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response"); |
| single_value->field_SourceAddressEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response"); |
| 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 : "@IsobusNMMessageTypes.N_NT_Response"); |
| } |
| |
| boolean N__NT__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__NT__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__NTX__Request::N__NTX__Request() |
| { |
| } |
| |
| N__NTX__Request::N__NTX__Request(const INTEGER& par_msgFunction, |
| const PortNibble& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__NTX__Request::N__NTX__Request(const N__NTX__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__NTX__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__NTX__Request::get_descriptor() const { return &N__NTX__Request_descr_; } |
| N__NTX__Request& N__NTX__Request::operator=(const N__NTX__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NTX_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__NTX__Request::operator==(const N__NTX__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__NTX__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__NTX__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__NTX__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__NTX__Request::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_NTX_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NTX_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_NTX_Request"); |
| } |
| } |
| |
| void N__NTX__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__NTX__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__NTX__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__NTX__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__NTX__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__NTX__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortNibble_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__NTX__Request_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__NTX__Request_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__NTX__Request_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__NTX__Request_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__NTX__Request_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__NTX__Request_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__NTX__Request_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__NTX__Request_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__NTX__Request_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__NTX__Request_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__NTX__Request_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__NTX__Request_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__NTX__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NTX__Request_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NTX__Request_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__NTX__Request_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__NTX__Request_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__NTX__Request_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__NTX__Request_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__NTX__Request_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__NTX__Request_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__NTX__Request_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__NTX__Request_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__NTX__Request_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__NTX__Request_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__NTX__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortNibble_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__NTX__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__NTX__Request_template::copy_value(const N__NTX__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__NTX__Request_template::copy_template(const N__NTX__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__NTX__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__NTX__Request_template::N__NTX__Request_template() |
| { |
| } |
| |
| N__NTX__Request_template::N__NTX__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__NTX__Request_template::N__NTX__Request_template(const N__NTX__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__NTX__Request_template::N__NTX__Request_template(const OPTIONAL<N__NTX__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Request from an unbound optional field."); |
| } |
| } |
| |
| N__NTX__Request_template::N__NTX__Request_template(const N__NTX__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__NTX__Request_template::~N__NTX__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__NTX__Request_template& N__NTX__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__NTX__Request_template& N__NTX__Request_template::operator=(const N__NTX__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__NTX__Request_template& N__NTX__Request_template::operator=(const OPTIONAL<N__NTX__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Request&)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 @IsobusNMMessageTypes.N_NTX_Request."); |
| } |
| return *this; |
| } |
| |
| N__NTX__Request_template& N__NTX__Request_template::operator=(const N__NTX__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__NTX__Request_template::match(const N__NTX__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__NTX__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__NTX__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__NTX__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__NTX__Request N__NTX__Request_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 @IsobusNMMessageTypes.N_NTX_Request."); |
| N__NTX__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__NTX__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__NTX__Request_template[list_length]; |
| } |
| |
| N__NTX__Request_template& N__NTX__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__NTX__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__NTX__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortNibble_template& N__NTX__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortNibble_template& N__NTX__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__NTX__Request_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__NTX__Request_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__NTX__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request 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 @IsobusNMMessageTypes.N_NTX_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request."); |
| } |
| return 0; |
| } |
| |
| void N__NTX__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__NTX__Request_template::log_match(const N__NTX__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__NTX__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_NTX_Request."); |
| } |
| } |
| |
| void N__NTX__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__NTX__Request_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 @IsobusNMMessageTypes.N_NTX_Request."); |
| } |
| } |
| |
| void N__NTX__Request_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: { |
| N__NTX__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_NTX_Request has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NTX_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_NTX_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__NTX__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request"); |
| 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 : "@IsobusNMMessageTypes.N_NTX_Request"); |
| } |
| |
| boolean N__NTX__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__NTX__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| SA__NAME__pair::SA__NAME__pair() |
| { |
| } |
| |
| SA__NAME__pair::SA__NAME__pair(const OCTETSTRING& par_sourceAddress, |
| const NAME& par_name) |
| : field_sourceAddress(par_sourceAddress), |
| field_name(par_name) |
| { |
| } |
| |
| SA__NAME__pair::SA__NAME__pair(const SA__NAME__pair& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| if (other_value.sourceAddress().is_bound()) field_sourceAddress = other_value.sourceAddress(); |
| else field_sourceAddress.clean_up(); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| |
| void SA__NAME__pair::clean_up() |
| { |
| field_sourceAddress.clean_up(); |
| field_name.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* SA__NAME__pair::get_descriptor() const { return &SA__NAME__pair_descr_; } |
| SA__NAME__pair& SA__NAME__pair::operator=(const SA__NAME__pair& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| if (other_value.sourceAddress().is_bound()) field_sourceAddress = other_value.sourceAddress(); |
| else field_sourceAddress.clean_up(); |
| if (other_value.name().is_bound()) field_name = other_value.name(); |
| else field_name.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean SA__NAME__pair::operator==(const SA__NAME__pair& other_value) const |
| { |
| return field_sourceAddress==other_value.field_sourceAddress |
| && field_name==other_value.field_name; |
| } |
| |
| boolean SA__NAME__pair::is_bound() const |
| { |
| return (field_sourceAddress.is_bound()) |
| || (field_name.is_bound()); |
| } |
| boolean SA__NAME__pair::is_value() const |
| { |
| return field_sourceAddress.is_value() |
| && field_name.is_value(); |
| } |
| void SA__NAME__pair::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ sourceAddress := "); |
| field_sourceAddress.log(); |
| TTCN_Logger::log_event_str(", name := "); |
| field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void SA__NAME__pair::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.SA_NAME_pair has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sourceAddress().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "sourceAddress")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| sourceAddress().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.SA_NAME_pair: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.SA_NAME_pair"); |
| } |
| } |
| |
| void SA__NAME__pair::set_implicit_omit() |
| { |
| if (sourceAddress().is_bound()) sourceAddress().set_implicit_omit(); |
| if (name().is_bound()) name().set_implicit_omit(); |
| } |
| |
| void SA__NAME__pair::encode_text(Text_Buf& text_buf) const |
| { |
| field_sourceAddress.encode_text(text_buf); |
| field_name.encode_text(text_buf); |
| } |
| |
| void SA__NAME__pair::decode_text(Text_Buf& text_buf) |
| { |
| field_sourceAddress.decode_text(text_buf); |
| field_name.decode_text(text_buf); |
| } |
| |
| void SA__NAME__pair::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void SA__NAME__pair::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int SA__NAME__pair::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, SourceAddress_descr_.raw->forceomit); |
| decoded_field_length = field_sourceAddress.RAW_decode(SourceAddress_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_name.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int SA__NAME__pair::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SourceAddress_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NAME_descr_.raw); |
| encoded_length += field_sourceAddress.RAW_encode(SourceAddress_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct SA__NAME__pair_template::single_value_struct { |
| OCTETSTRING_template field_sourceAddress; |
| NAME_template field_name; |
| }; |
| |
| void SA__NAME__pair_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_sourceAddress = ANY_VALUE; |
| single_value->field_name = ANY_VALUE; |
| } |
| } |
| } |
| |
| void SA__NAME__pair_template::copy_value(const SA__NAME__pair& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.sourceAddress().is_bound()) { |
| single_value->field_sourceAddress = other_value.sourceAddress(); |
| } else { |
| single_value->field_sourceAddress.clean_up(); |
| } |
| if (other_value.name().is_bound()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void SA__NAME__pair_template::copy_template(const SA__NAME__pair_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.sourceAddress().get_selection()) { |
| single_value->field_sourceAddress = other_value.sourceAddress(); |
| } else { |
| single_value->field_sourceAddress.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) { |
| single_value->field_name = other_value.name(); |
| } else { |
| single_value->field_name.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new SA__NAME__pair_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| SA__NAME__pair_template::SA__NAME__pair_template() |
| { |
| } |
| |
| SA__NAME__pair_template::SA__NAME__pair_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| SA__NAME__pair_template::SA__NAME__pair_template(const SA__NAME__pair& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| SA__NAME__pair_template::SA__NAME__pair_template(const OPTIONAL<SA__NAME__pair>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const SA__NAME__pair&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.SA_NAME_pair from an unbound optional field."); |
| } |
| } |
| |
| SA__NAME__pair_template::SA__NAME__pair_template(const SA__NAME__pair_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| SA__NAME__pair_template::~SA__NAME__pair_template() |
| { |
| clean_up(); |
| } |
| |
| SA__NAME__pair_template& SA__NAME__pair_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| SA__NAME__pair_template& SA__NAME__pair_template::operator=(const SA__NAME__pair& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| SA__NAME__pair_template& SA__NAME__pair_template::operator=(const OPTIONAL<SA__NAME__pair>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const SA__NAME__pair&)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 @IsobusNMMessageTypes.SA_NAME_pair."); |
| } |
| return *this; |
| } |
| |
| SA__NAME__pair_template& SA__NAME__pair_template::operator=(const SA__NAME__pair_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean SA__NAME__pair_template::match(const SA__NAME__pair& 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.sourceAddress().is_bound()) return FALSE; |
| if(!single_value->field_sourceAddress.match(other_value.sourceAddress(), legacy))return FALSE; |
| if(!other_value.name().is_bound()) return FALSE; |
| if(!single_value->field_name.match(other_value.name(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| } |
| return FALSE; |
| } |
| |
| boolean SA__NAME__pair_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_sourceAddress.is_bound() |
| |
| ||single_value->field_name.is_bound() |
| ; |
| } |
| |
| boolean SA__NAME__pair_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_sourceAddress.is_value() |
| &&single_value->field_name.is_value(); |
| } |
| |
| void SA__NAME__pair_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| SA__NAME__pair SA__NAME__pair_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 @IsobusNMMessageTypes.SA_NAME_pair."); |
| SA__NAME__pair ret_val; |
| if (single_value->field_sourceAddress.is_bound()) { |
| ret_val.sourceAddress() = single_value->field_sourceAddress.valueof(); |
| } |
| if (single_value->field_name.is_bound()) { |
| ret_val.name() = single_value->field_name.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void SA__NAME__pair_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new SA__NAME__pair_template[list_length]; |
| } |
| |
| SA__NAME__pair_template& SA__NAME__pair_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| return value_list.list_value[list_index]; |
| } |
| |
| OCTETSTRING_template& SA__NAME__pair_template::sourceAddress() |
| { |
| set_specific(); |
| return single_value->field_sourceAddress; |
| } |
| |
| const OCTETSTRING_template& SA__NAME__pair_template::sourceAddress() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field sourceAddress of a non-specific template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| return single_value->field_sourceAddress; |
| } |
| |
| NAME_template& SA__NAME__pair_template::name() |
| { |
| set_specific(); |
| return single_value->field_name; |
| } |
| |
| const NAME_template& SA__NAME__pair_template::name() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| return single_value->field_name; |
| } |
| |
| int SA__NAME__pair_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair 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 @IsobusNMMessageTypes.SA_NAME_pair 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 @IsobusNMMessageTypes.SA_NAME_pair containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair."); |
| } |
| return 0; |
| } |
| |
| void SA__NAME__pair_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ sourceAddress := "); |
| single_value->field_sourceAddress.log(); |
| TTCN_Logger::log_event_str(", name := "); |
| single_value->field_name.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void SA__NAME__pair_template::log_match(const SA__NAME__pair& 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_sourceAddress.match(match_value.sourceAddress(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".sourceAddress"); |
| single_value->field_sourceAddress.log_match(match_value.sourceAddress(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_name.match(match_value.name(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".name"); |
| single_value->field_name.log_match(match_value.name(), 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("{ sourceAddress := "); |
| single_value->field_sourceAddress.log_match(match_value.sourceAddress(), legacy); |
| TTCN_Logger::log_event_str(", name := "); |
| single_value->field_name.log_match(match_value.name(), 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 SA__NAME__pair_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_sourceAddress.encode_text(text_buf); |
| single_value->field_name.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 @IsobusNMMessageTypes.SA_NAME_pair."); |
| } |
| } |
| |
| void SA__NAME__pair_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_sourceAddress.decode_text(text_buf); |
| single_value->field_name.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 SA__NAME__pair_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 @IsobusNMMessageTypes.SA_NAME_pair."); |
| } |
| } |
| |
| void SA__NAME__pair_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: { |
| SA__NAME__pair_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.SA_NAME_pair has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) sourceAddress().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "sourceAddress")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| sourceAddress().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "name")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| name().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.SA_NAME_pair: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.SA_NAME_pair"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void SA__NAME__pair_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_sourceAddress.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.SA_NAME_pair"); |
| single_value->field_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.SA_NAME_pair"); |
| 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 : "@IsobusNMMessageTypes.SA_NAME_pair"); |
| } |
| |
| boolean SA__NAME__pair_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean SA__NAME__pair_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| |
| const SA__NAME__pair N__NTX__Response_sourceaddress__NAME__pairs::UNBOUND_ELEM; |
| N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs() |
| { |
| val_ptr = NULL; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs(null_type) |
| { |
| val_ptr = new recordof_setof_struct; |
| val_ptr->ref_count = 1; |
| val_ptr->n_elements = 0; |
| val_ptr->value_elements = NULL; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs::~N__NTX__Response_sourceaddress__NAME__pairs() |
| { |
| clean_up(); |
| if (val_ptr != NULL) val_ptr = NULL; |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs::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."); |
| } |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs& N__NTX__Response_sourceaddress__NAME__pairs::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; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs& N__NTX__Response_sourceaddress__NAME__pairs::operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (this != &other_value) { |
| clean_up(); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| return *this; |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs::operator==(null_type) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return val_ptr->n_elements == 0 ; |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs::operator==(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const |
| { |
| if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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; |
| } |
| |
| SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 = (SA__NAME__pair**)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 SA__NAME__pair(*(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 SA__NAME__pair; |
| } |
| return *val_ptr->value_elements[index_value]; |
| } |
| |
| SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](int index_value) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs using a negative index: %d.", index_value); |
| if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: 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 SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return (*this)[(int)index_value]; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator<<=(int rotate_count) const |
| { |
| return *this >>= (-rotate_count); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator<<=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate left operator."); |
| return *this >>= (int)(-rotate_count); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator>>=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate right operator."); |
| return *this >>= (int)rotate_count; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator>>=(int rotate_count) const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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; |
| N__NTX__Response_sourceaddress__NAME__pairs ret_val; |
| ret_val.set_size(val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new SA__NAME__pair(*val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator+(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const |
| { |
| if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs concatenation."); |
| if (val_ptr->n_elements == 0) return other_value; |
| if (other_value.val_ptr->n_elements == 0) return *this; |
| N__NTX__Response_sourceaddress__NAME__pairs ret_val; |
| ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new SA__NAME__pair(*val_ptr->value_elements[i]); |
| } |
| } |
| for (int i=0; i<other_value.val_ptr->n_elements; i++) { |
| if (other_value.val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new SA__NAME__pair(*other_value.val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::substr(int index, int returncount) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs","element"); |
| N__NTX__Response_sourceaddress__NAME__pairs ret_val; |
| ret_val.set_size(returncount); |
| for (int i=0; i<returncount; i++) { |
| if (val_ptr->value_elements[i+index] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new SA__NAME__pair(*val_ptr->value_elements[i+index]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& repl) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs","element"); |
| N__NTX__Response_sourceaddress__NAME__pairs 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 SA__NAME__pair(*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 SA__NAME__pair(*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 SA__NAME__pair(*val_ptr->value_elements[index+i+len]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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 = (SA__NAME__pair**)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 SA__NAME__pair(*(val_ptr->value_elements[elem_count])); |
| } |
| } |
| clean_up(); |
| val_ptr = new_val_ptr; |
| } |
| if (new_size > val_ptr->n_elements) { |
| val_ptr->value_elements = (SA__NAME__pair**)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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: %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 = (SA__NAME__pair**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); |
| val_ptr->n_elements = new_size; |
| } |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::size_of() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return val_ptr->n_elements; |
| } |
| |
| int N__NTX__Response_sourceaddress__NAME__pairs::lengthof() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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 N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if (curr->get_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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| (*this)[curr->get_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", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| } |
| 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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if ((curr->get_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", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| } |
| break; |
| default: |
| TTCN_error("Internal error: Unknown operation type."); |
| } |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::encode_text(Text_Buf& text_buf) const |
| { |
| if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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 N__NTX__Response_sourceaddress__NAME__pairs::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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| val_ptr->value_elements = (SA__NAME__pair**)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 SA__NAME__pair; |
| val_ptr->value_elements[elem_count]->decode_text(text_buf); |
| } |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__NTX__Response_sourceaddress__NAME__pairs::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean /*no_err*/, int sel_field, boolean first_call, const RAW_Force_Omit*){ |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int decoded_field_length=0; |
| size_t start_of_field=0; |
| if(first_call) { |
| clean_up(); |
| val_ptr=new recordof_setof_struct; |
| val_ptr->ref_count=1; |
| val_ptr->n_elements=0; |
| val_ptr->value_elements=NULL; |
| } |
| int start_field=val_ptr->n_elements; |
| if(p_td.raw->fieldlength || sel_field!=-1){ |
| int a=0; |
| if(sel_field==-1) sel_field=p_td.raw->fieldlength; |
| for(a=0;a<sel_field;a++){ |
| decoded_field_length=(*this)[a+start_field].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| } |
| if(a==0) val_ptr->n_elements=0; |
| } else { |
| if(limit==0){ |
| if(!first_call) return -1; |
| val_ptr->n_elements=0; |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| int a=start_field; |
| while(limit>0){ |
| start_of_field=p_buf.get_pos_bit(); |
| decoded_field_length=(*this)[a].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0){ |
| delete &(*this)[a]; |
| val_ptr->n_elements--; |
| p_buf.set_pos_bit(start_of_field); |
| if(a>start_field){ |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } else return -1; |
| } |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| a++; |
| } |
| } |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| |
| int N__NTX__Response_sourceaddress__NAME__pairs::RAW_encode(const TTCN_Typedescriptor_t& p_td,RAW_enc_tree& myleaf) const{ |
| int encoded_length=0; |
| int encoded_num_of_records=p_td.raw->fieldlength?smaller(val_ptr->n_elements, p_td.raw->fieldlength):val_ptr->n_elements; |
| myleaf.isleaf=FALSE; |
| myleaf.rec_of=TRUE; |
| myleaf.body.node.num_of_nodes=encoded_num_of_records; |
| myleaf.body.node.nodes=init_nodes_of_enc_tree(encoded_num_of_records); |
| for(int a=0;a<encoded_num_of_records;a++){ |
| myleaf.body.node.nodes[a]=new RAW_enc_tree(TRUE,&myleaf,&(myleaf.curr_pos),a,p_td.oftype_descr->raw); |
| encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); |
| } |
| return myleaf.length=encoded_length; |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_template::copy_value(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs with an unbound value."); |
| single_value.n_elements = other_value.size_of(); |
| single_value.value_elements = (SA__NAME__pair_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 SA__NAME__pair_template(other_value[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new SA__NAME__pair_template; |
| } |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_template::copy_template(const N__NTX__Response_sourceaddress__NAME__pairs_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 = (SA__NAME__pair_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 SA__NAME__pair_template(*other_value.single_value.value_elements[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new SA__NAME__pair_template; |
| } |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__NTX__Response_sourceaddress__NAME__pairs_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__NTX__Response_sourceaddress__NAME__pairs*)value_ptr)[value_index], legacy); |
| else return ((const N__NTX__Response_sourceaddress__NAME__pairs_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template() |
| { |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(template_sel other_value) |
| : Record_Of_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(null_type) |
| : Record_Of_Template(SPECIFIC_VALUE) |
| { |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Response_sourceaddress__NAME__pairs&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs from an unbound optional field."); |
| } |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value) |
| : Record_Of_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template::~N__NTX__Response_sourceaddress__NAME__pairs_template() |
| { |
| clean_up(); |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_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: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(null_type) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| return *this; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Response_sourceaddress__NAME__pairs&)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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| } |
| return *this; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| break; |
| } |
| return *single_value.value_elements[index_value]; |
| } |
| |
| SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](int index_value) const |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs using a negative index: %d.", index_value); |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: 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 SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return (*this)[(int)index_value]; |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_template::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| 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 = (SA__NAME__pair_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 SA__NAME__pair_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 SA__NAME__pair_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 = (SA__NAME__pair_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); |
| single_value.n_elements = new_size; |
| } |
| } |
| |
| int N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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; i<elem_count; i++) { |
| switch (single_value.value_elements[i]->get_selection()) { |
| case OMIT_VALUE: |
| TTCN_error("Performing %sof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs containing complemented list.", op_name); |
| default: |
| TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.", op_name); |
| } |
| return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_template::match(const N__NTX__Response_sourceaddress__NAME__pairs& 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; |
| default: |
| TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_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; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| N__NTX__Response_sourceaddress__NAME__pairs 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; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_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); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_template::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_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()); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_template::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& 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 N__NTX__Response_sourceaddress__NAME__pairs_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| clean_up(); |
| switch (template_type) { |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = list_length; |
| value_list.list_value = new N__NTX__Response_sourceaddress__NAME__pairs_template[list_length]; |
| break; |
| default: |
| TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| } |
| set_selection(template_type); |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_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 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; |
| default: |
| log_generic(); |
| } |
| log_restricted(); |
| log_ifpresent(); |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_template::log_match(const N__NTX__Response_sourceaddress__NAME__pairs& 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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| } |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| single_value.value_elements = (SA__NAME__pair_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 SA__NAME__pair_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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| } |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_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: { |
| N__NTX__Response_sourceaddress__NAME__pairs_template temp; |
| temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = temp; |
| break; } |
| case Module_Param::MP_Indexed_List: |
| if (template_selection!=SPECIFIC_VALUE) set_size(0); |
| for (size_t p_i=0; p_i<param.get_size(); ++p_i) { |
| (*this)[(int)(param.get_elem(p_i)->get_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_i<param.get_size(); ++p_i) { |
| switch (param.get_elem(p_i)->get_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_i<param_i->get_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; |
| default: |
| param.type_error("record of template", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| set_length_range(param); |
| } |
| |
| void N__NTX__Response_sourceaddress__NAME__pairs_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; i<single_value.n_elements; i++) single_value.value_elements[i]->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| 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 : "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs"); |
| } |
| |
| boolean N__NTX__Response_sourceaddress__NAME__pairs_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); |
| } |
| } |
| N__NTX__Response::N__NTX__Response() |
| { |
| } |
| |
| N__NTX__Response::N__NTX__Response(const INTEGER& par_msgFunction, |
| const PortNibble& par_portPair, |
| const INTEGER& par_numberOfReportedPorts, |
| const N__NTX__Response_sourceaddress__NAME__pairs& par_sourceaddress__NAME__pairs) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_numberOfReportedPorts(par_numberOfReportedPorts), |
| field_sourceaddress__NAME__pairs(par_sourceaddress__NAME__pairs) |
| { |
| } |
| |
| N__NTX__Response::N__NTX__Response(const N__NTX__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.numberOfReportedPorts().is_bound()) field_numberOfReportedPorts = other_value.numberOfReportedPorts(); |
| else field_numberOfReportedPorts.clean_up(); |
| if (other_value.sourceaddress__NAME__pairs().is_bound()) field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs(); |
| else field_sourceaddress__NAME__pairs.clean_up(); |
| } |
| |
| void N__NTX__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_numberOfReportedPorts.clean_up(); |
| field_sourceaddress__NAME__pairs.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__NTX__Response::get_descriptor() const { return &N__NTX__Response_descr_; } |
| N__NTX__Response& N__NTX__Response::operator=(const N__NTX__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NTX_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.numberOfReportedPorts().is_bound()) field_numberOfReportedPorts = other_value.numberOfReportedPorts(); |
| else field_numberOfReportedPorts.clean_up(); |
| if (other_value.sourceaddress__NAME__pairs().is_bound()) field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs(); |
| else field_sourceaddress__NAME__pairs.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__NTX__Response::operator==(const N__NTX__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_numberOfReportedPorts==other_value.field_numberOfReportedPorts |
| && field_sourceaddress__NAME__pairs==other_value.field_sourceaddress__NAME__pairs; |
| } |
| |
| boolean N__NTX__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_numberOfReportedPorts.is_bound()) |
| || (field_sourceaddress__NAME__pairs.is_bound()); |
| } |
| boolean N__NTX__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_numberOfReportedPorts.is_value() |
| && field_sourceaddress__NAME__pairs.is_value(); |
| } |
| void N__NTX__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", numberOfReportedPorts := "); |
| field_numberOfReportedPorts.log(); |
| TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := "); |
| field_sourceaddress__NAME__pairs.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__NTX__Response::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_NTX_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfReportedPorts().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sourceaddress__NAME__pairs().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "numberOfReportedPorts")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| numberOfReportedPorts().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "sourceaddress_NAME_pairs")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| sourceaddress__NAME__pairs().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NTX_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_NTX_Response"); |
| } |
| } |
| |
| void N__NTX__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (numberOfReportedPorts().is_bound()) numberOfReportedPorts().set_implicit_omit(); |
| if (sourceaddress__NAME__pairs().is_bound()) sourceaddress__NAME__pairs().set_implicit_omit(); |
| } |
| |
| void N__NTX__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_numberOfReportedPorts.encode_text(text_buf); |
| field_sourceaddress__NAME__pairs.encode_text(text_buf); |
| } |
| |
| void N__NTX__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_numberOfReportedPorts.decode_text(text_buf); |
| field_sourceaddress__NAME__pairs.decode_text(text_buf); |
| } |
| |
| void N__NTX__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__NTX__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__NTX__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| int value_of_length_field2 = 0; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortNibble_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__NTX__Response_numberOfReportedPorts_descr_.raw->forceomit); |
| decoded_field_length = field_numberOfReportedPorts.RAW_decode(N__NTX__Response_numberOfReportedPorts_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| value_of_length_field2+=field_numberOfReportedPorts.get_long_long_val()*1; |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__NTX__Response_sourceaddress__NAME__pairs_descr_.raw->forceomit); |
| decoded_field_length = field_sourceaddress__NAME__pairs.RAW_decode(N__NTX__Response_sourceaddress__NAME__pairs_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field2, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| value_of_length_field2 -= decoded_field_length; |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__NTX__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NTX__Response_numberOfReportedPorts_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NTX__Response_sourceaddress__NAME__pairs_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += 8; |
| myleaf.body.node.nodes[2]->calc = CALC_LENGTH; |
| myleaf.body.node.nodes[2]->coding_descr = &N__NTX__Response_numberOfReportedPorts_descr_; |
| myleaf.body.node.nodes[2]->calcof.lengthto.num_of_fields = 1; |
| myleaf.body.node.nodes[2]->calcof.lengthto.unit = -1; |
| myleaf.body.node.nodes[2]->calcof.lengthto.offset = 0; |
| myleaf.body.node.nodes[2]->calcof.lengthto.fields = init_lengthto_fields_list(1); |
| myleaf.body.node.nodes[2]->length = 8; |
| myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level; |
| myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos; |
| encoded_length += field_sourceaddress__NAME__pairs.RAW_encode(N__NTX__Response_sourceaddress__NAME__pairs_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__NTX__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortNibble_template field_portPair; |
| INTEGER_template field_numberOfReportedPorts; |
| N__NTX__Response_sourceaddress__NAME__pairs_template field_sourceaddress__NAME__pairs; |
| }; |
| |
| void N__NTX__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_numberOfReportedPorts = ANY_VALUE; |
| single_value->field_sourceaddress__NAME__pairs = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__NTX__Response_template::copy_value(const N__NTX__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.numberOfReportedPorts().is_bound()) { |
| single_value->field_numberOfReportedPorts = other_value.numberOfReportedPorts(); |
| } else { |
| single_value->field_numberOfReportedPorts.clean_up(); |
| } |
| if (other_value.sourceaddress__NAME__pairs().is_bound()) { |
| single_value->field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs(); |
| } else { |
| single_value->field_sourceaddress__NAME__pairs.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__NTX__Response_template::copy_template(const N__NTX__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.numberOfReportedPorts().get_selection()) { |
| single_value->field_numberOfReportedPorts = other_value.numberOfReportedPorts(); |
| } else { |
| single_value->field_numberOfReportedPorts.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.sourceaddress__NAME__pairs().get_selection()) { |
| single_value->field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs(); |
| } else { |
| single_value->field_sourceaddress__NAME__pairs.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__NTX__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__NTX__Response_template::N__NTX__Response_template() |
| { |
| } |
| |
| N__NTX__Response_template::N__NTX__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__NTX__Response_template::N__NTX__Response_template(const N__NTX__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__NTX__Response_template::N__NTX__Response_template(const OPTIONAL<N__NTX__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Response from an unbound optional field."); |
| } |
| } |
| |
| N__NTX__Response_template::N__NTX__Response_template(const N__NTX__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__NTX__Response_template::~N__NTX__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__NTX__Response_template& N__NTX__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__NTX__Response_template& N__NTX__Response_template::operator=(const N__NTX__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__NTX__Response_template& N__NTX__Response_template::operator=(const OPTIONAL<N__NTX__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__NTX__Response&)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 @IsobusNMMessageTypes.N_NTX_Response."); |
| } |
| return *this; |
| } |
| |
| N__NTX__Response_template& N__NTX__Response_template::operator=(const N__NTX__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__NTX__Response_template::match(const N__NTX__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.numberOfReportedPorts().is_bound()) return FALSE; |
| if(!single_value->field_numberOfReportedPorts.match(other_value.numberOfReportedPorts(), legacy))return FALSE; |
| if(!other_value.sourceaddress__NAME__pairs().is_bound()) return FALSE; |
| if(!single_value->field_sourceaddress__NAME__pairs.match(other_value.sourceaddress__NAME__pairs(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__NTX__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_numberOfReportedPorts.is_bound() |
| |
| ||single_value->field_sourceaddress__NAME__pairs.is_bound() |
| ; |
| } |
| |
| boolean N__NTX__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_numberOfReportedPorts.is_value() |
| &&single_value->field_sourceaddress__NAME__pairs.is_value(); |
| } |
| |
| void N__NTX__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__NTX__Response N__NTX__Response_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 @IsobusNMMessageTypes.N_NTX_Response."); |
| N__NTX__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_numberOfReportedPorts.is_bound()) { |
| ret_val.numberOfReportedPorts() = single_value->field_numberOfReportedPorts.valueof(); |
| } |
| if (single_value->field_sourceaddress__NAME__pairs.is_bound()) { |
| ret_val.sourceaddress__NAME__pairs() = single_value->field_sourceaddress__NAME__pairs.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__NTX__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__NTX__Response_template[list_length]; |
| } |
| |
| N__NTX__Response_template& N__NTX__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__NTX__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__NTX__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortNibble_template& N__NTX__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortNibble_template& N__NTX__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| return single_value->field_portPair; |
| } |
| |
| INTEGER_template& N__NTX__Response_template::numberOfReportedPorts() |
| { |
| set_specific(); |
| return single_value->field_numberOfReportedPorts; |
| } |
| |
| const INTEGER_template& N__NTX__Response_template::numberOfReportedPorts() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field numberOfReportedPorts of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| return single_value->field_numberOfReportedPorts; |
| } |
| |
| N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_template::sourceaddress__NAME__pairs() |
| { |
| set_specific(); |
| return single_value->field_sourceaddress__NAME__pairs; |
| } |
| |
| const N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_template::sourceaddress__NAME__pairs() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field sourceaddress_NAME_pairs of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| return single_value->field_sourceaddress__NAME__pairs; |
| } |
| |
| int N__NTX__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response 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 @IsobusNMMessageTypes.N_NTX_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response."); |
| } |
| return 0; |
| } |
| |
| void N__NTX__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", numberOfReportedPorts := "); |
| single_value->field_numberOfReportedPorts.log(); |
| TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := "); |
| single_value->field_sourceaddress__NAME__pairs.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__NTX__Response_template::log_match(const N__NTX__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_numberOfReportedPorts.match(match_value.numberOfReportedPorts(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".numberOfReportedPorts"); |
| single_value->field_numberOfReportedPorts.log_match(match_value.numberOfReportedPorts(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_sourceaddress__NAME__pairs.match(match_value.sourceaddress__NAME__pairs(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".sourceaddress_NAME_pairs"); |
| single_value->field_sourceaddress__NAME__pairs.log_match(match_value.sourceaddress__NAME__pairs(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", numberOfReportedPorts := "); |
| single_value->field_numberOfReportedPorts.log_match(match_value.numberOfReportedPorts(), legacy); |
| TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := "); |
| single_value->field_sourceaddress__NAME__pairs.log_match(match_value.sourceaddress__NAME__pairs(), 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 N__NTX__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_numberOfReportedPorts.encode_text(text_buf); |
| single_value->field_sourceaddress__NAME__pairs.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 @IsobusNMMessageTypes.N_NTX_Response."); |
| } |
| } |
| |
| void N__NTX__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_numberOfReportedPorts.decode_text(text_buf); |
| single_value->field_sourceaddress__NAME__pairs.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 N__NTX__Response_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 @IsobusNMMessageTypes.N_NTX_Response."); |
| } |
| } |
| |
| void N__NTX__Response_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: { |
| N__NTX__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_NTX_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfReportedPorts().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sourceaddress__NAME__pairs().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "numberOfReportedPorts")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| numberOfReportedPorts().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "sourceaddress_NAME_pairs")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| sourceaddress__NAME__pairs().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_NTX_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_NTX_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__NTX__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response"); |
| single_value->field_numberOfReportedPorts.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response"); |
| single_value->field_sourceaddress__NAME__pairs.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response"); |
| 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 : "@IsobusNMMessageTypes.N_NTX_Response"); |
| } |
| |
| boolean N__NTX__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__NTX__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| e__ParametricIdentifier::e__ParametricIdentifier() |
| { |
| enum_value = UNBOUND_VALUE; |
| } |
| |
| e__ParametricIdentifier::e__ParametricIdentifier(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with invalid numeric value %d.", other_value); |
| enum_value = (enum_type)other_value; |
| } |
| |
| e__ParametricIdentifier::e__ParametricIdentifier(enum_type other_value) |
| { |
| enum_value = other_value; |
| } |
| |
| e__ParametricIdentifier::e__ParametricIdentifier(const e__ParametricIdentifier& other_value) |
| : Base_Type() |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| enum_value = other_value.enum_value; |
| } |
| |
| e__ParametricIdentifier& e__ParametricIdentifier::operator=(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", other_value); |
| enum_value = (enum_type)other_value; |
| return *this; |
| } |
| |
| e__ParametricIdentifier& e__ParametricIdentifier::operator=(enum_type other_value) |
| { |
| enum_value = other_value; |
| return *this; |
| } |
| |
| e__ParametricIdentifier& e__ParametricIdentifier::operator=(const e__ParametricIdentifier& other_value) |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| enum_value = other_value.enum_value; |
| return *this; |
| } |
| |
| boolean e__ParametricIdentifier::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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value == other_value; |
| } |
| |
| boolean e__ParametricIdentifier::operator==(const e__ParametricIdentifier& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value == other_value.enum_value; |
| } |
| |
| boolean e__ParametricIdentifier::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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value < other_value; |
| } |
| |
| boolean e__ParametricIdentifier::operator<(const e__ParametricIdentifier& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value < other_value.enum_value; |
| } |
| |
| boolean e__ParametricIdentifier::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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value > other_value; |
| } |
| |
| boolean e__ParametricIdentifier::operator>(const e__ParametricIdentifier& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value > other_value.enum_value; |
| } |
| |
| const char *e__ParametricIdentifier::enum_to_str(enum_type enum_par) |
| { |
| switch (enum_par) { |
| case requestAllParameters: return "requestAllParameters"; |
| case buffersize: return "buffersize"; |
| case maximumFilterDatabaseSize: return "maximumFilterDatabaseSize"; |
| case numberOfFilterDatabaseEntries: return "numberOfFilterDatabaseEntries"; |
| case maximumNumberOfMessagesReceivedPerSecond: return "maximumNumberOfMessagesReceivedPerSecond"; |
| case maximumNumberOfMessagesForwardedPerSecond: return "maximumNumberOfMessagesForwardedPerSecond"; |
| case maximumNumberOfMessagesFilteredPerSecond: return "maximumNumberOfMessagesFilteredPerSecond"; |
| case maximumTransitDelayTime__ms: return "maximumTransitDelayTime_ms"; |
| case averageTransitDelayTime__ms: return "averageTransitDelayTime_ms"; |
| case numberOfMessagesLostDueToBufferOverflow: return "numberOfMessagesLostDueToBufferOverflow"; |
| case numberOfMessagesWithExcessTransitDelayTime: return "numberOfMessagesWithExcessTransitDelayTime"; |
| case averageNumberOfMessagesReceivedPerSecond: return "averageNumberOfMessagesReceivedPerSecond"; |
| case averageNumberOfMessagesForwardedPerSecond: return "averageNumberOfMessagesForwardedPerSecond"; |
| case averageNumberOfMessagesFilteredPerSecond: return "averageNumberOfMessagesFilteredPerSecond"; |
| case uptimeSinceLastPowerOnReset__s: return "uptimeSinceLastPowerOnReset_s"; |
| case numberOfPorts: return "numberOfPorts"; |
| case networkInterconnectionUnitType: return "networkInterconnectionUnitType"; |
| case reserved: return "reserved"; |
| default: return "<unknown>"; |
| } |
| } |
| |
| e__ParametricIdentifier::enum_type e__ParametricIdentifier::str_to_enum(const char *str_par) |
| { |
| if (!strcmp(str_par, "requestAllParameters")) return requestAllParameters; |
| else if (!strcmp(str_par, "buffersize")) return buffersize; |
| else if (!strcmp(str_par, "maximumFilterDatabaseSize")) return maximumFilterDatabaseSize; |
| else if (!strcmp(str_par, "numberOfFilterDatabaseEntries")) return numberOfFilterDatabaseEntries; |
| else if (!strcmp(str_par, "maximumNumberOfMessagesReceivedPerSecond")) return maximumNumberOfMessagesReceivedPerSecond; |
| else if (!strcmp(str_par, "maximumNumberOfMessagesForwardedPerSecond")) return maximumNumberOfMessagesForwardedPerSecond; |
| else if (!strcmp(str_par, "maximumNumberOfMessagesFilteredPerSecond")) return maximumNumberOfMessagesFilteredPerSecond; |
| else if (!strcmp(str_par, "maximumTransitDelayTime_ms")) return maximumTransitDelayTime__ms; |
| else if (!strcmp(str_par, "averageTransitDelayTime_ms")) return averageTransitDelayTime__ms; |
| else if (!strcmp(str_par, "numberOfMessagesLostDueToBufferOverflow")) return numberOfMessagesLostDueToBufferOverflow; |
| else if (!strcmp(str_par, "numberOfMessagesWithExcessTransitDelayTime")) return numberOfMessagesWithExcessTransitDelayTime; |
| else if (!strcmp(str_par, "averageNumberOfMessagesReceivedPerSecond")) return averageNumberOfMessagesReceivedPerSecond; |
| else if (!strcmp(str_par, "averageNumberOfMessagesForwardedPerSecond")) return averageNumberOfMessagesForwardedPerSecond; |
| else if (!strcmp(str_par, "averageNumberOfMessagesFilteredPerSecond")) return averageNumberOfMessagesFilteredPerSecond; |
| else if (!strcmp(str_par, "uptimeSinceLastPowerOnReset_s")) return uptimeSinceLastPowerOnReset__s; |
| else if (!strcmp(str_par, "numberOfPorts")) return numberOfPorts; |
| else if (!strcmp(str_par, "networkInterconnectionUnitType")) return networkInterconnectionUnitType; |
| else if (!strcmp(str_par, "reserved")) return reserved; |
| else return UNKNOWN_VALUE; |
| } |
| |
| boolean e__ParametricIdentifier::is_valid_enum(int int_par) |
| { |
| switch (int_par) { |
| case 0: |
| case 1: |
| case 2: |
| case 3: |
| case 4: |
| case 5: |
| case 6: |
| case 7: |
| case 8: |
| case 9: |
| case 10: |
| case 11: |
| case 12: |
| case 13: |
| case 14: |
| case 15: |
| case 16: |
| case 255: |
| return TRUE; |
| default: |
| return FALSE; |
| } |
| } |
| |
| int e__ParametricIdentifier::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 @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par; |
| } |
| |
| int e__ParametricIdentifier::enum2int(const e__ParametricIdentifier& 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 @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par.enum_value; |
| } |
| |
| void e__ParametricIdentifier::int2enum(int int_val) |
| { |
| if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", int_val); |
| enum_value = (enum_type)int_val; |
| } |
| |
| e__ParametricIdentifier::operator e__ParametricIdentifier::enum_type() const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return enum_value; |
| } |
| |
| void e__ParametricIdentifier::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 e__ParametricIdentifier::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", "@IsobusNMMessageTypes.e_ParametricIdentifier"); |
| enum_value = str_to_enum(param.get_enumerated()); |
| if (!is_valid_enum(enum_value)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| } |
| |
| void e__ParametricIdentifier::encode_text(Text_Buf& text_buf) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| text_buf.push_int(enum_value); |
| } |
| |
| void e__ParametricIdentifier::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 @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_value); |
| } |
| |
| void e__ParametricIdentifier::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void e__ParametricIdentifier::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int e__ParametricIdentifier::RAW_decode(const TTCN_Typedescriptor_t& p_td,TTCN_Buffer& p_buf,int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit*) |
| { |
| int decoded_value = 0; |
| int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err); |
| if (decoded_length < 0) return decoded_length; |
| if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; |
| else { |
| if(no_err){ |
| return -1; |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); |
| enum_value = UNKNOWN_VALUE; |
| } |
| } |
| return decoded_length; |
| } |
| |
| int e__ParametricIdentifier::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const |
| { |
| return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8); |
| } |
| |
| void e__ParametricIdentifier_template::copy_template(const e__ParametricIdentifier_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: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new e__ParametricIdentifier_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template() |
| { |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(int other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (!e__ParametricIdentifier::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with unknown numeric value %d.", other_value); |
| single_value = (e__ParametricIdentifier::enum_type)other_value; |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(e__ParametricIdentifier::enum_type other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| single_value = other_value; |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(const e__ParametricIdentifier& other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| single_value = other_value.enum_value; |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(const OPTIONAL<e__ParametricIdentifier>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__ParametricIdentifier::enum_type)(const e__ParametricIdentifier&)other_value; |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier from an unbound optional field."); |
| } |
| } |
| |
| e__ParametricIdentifier_template::e__ParametricIdentifier_template(const e__ParametricIdentifier_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| e__ParametricIdentifier_template::~e__ParametricIdentifier_template() |
| { |
| clean_up(); |
| } |
| |
| boolean e__ParametricIdentifier_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| return TRUE; |
| } |
| |
| boolean e__ParametricIdentifier_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value != e__ParametricIdentifier::UNBOUND_VALUE; |
| } |
| |
| void e__ParametricIdentifier_template::clean_up() |
| { |
| if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(int other_value) |
| { |
| if (!e__ParametricIdentifier::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", other_value); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__ParametricIdentifier::enum_type)other_value; |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(e__ParametricIdentifier::enum_type other_value) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value; |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const e__ParametricIdentifier& other_value) |
| { |
| if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier to a template."); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value.enum_value; |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const OPTIONAL<e__ParametricIdentifier>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__ParametricIdentifier::enum_type)(const e__ParametricIdentifier&)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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const e__ParametricIdentifier_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean e__ParametricIdentifier_template::match(e__ParametricIdentifier::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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| return FALSE; |
| } |
| |
| boolean e__ParametricIdentifier_template::match(const e__ParametricIdentifier& other_value, boolean) const |
| { |
| if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with an unbound value."); |
| return match(other_value.enum_value); |
| } |
| |
| e__ParametricIdentifier::enum_type e__ParametricIdentifier_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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return single_value; |
| } |
| |
| void e__ParametricIdentifier_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new e__ParametricIdentifier_template[list_length]; |
| } |
| |
| e__ParametricIdentifier_template& e__ParametricIdentifier_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void e__ParametricIdentifier_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_enum(e__ParametricIdentifier::enum_to_str(single_value), single_value); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void e__ParametricIdentifier_template::log_match(const e__ParametricIdentifier& 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 e__ParametricIdentifier_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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| } |
| |
| void e__ParametricIdentifier_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = (e__ParametricIdentifier::enum_type)text_buf.pull_int().get_val(); |
| if (!e__ParametricIdentifier::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", 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 e__ParametricIdentifier_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 @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| } |
| |
| boolean e__ParametricIdentifier_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean e__ParametricIdentifier_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void e__ParametricIdentifier_template::set_param(Module_Param& param) |
| { |
| param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: { |
| e__ParametricIdentifier_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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: { |
| e__ParametricIdentifier::enum_type enum_val = e__ParametricIdentifier::str_to_enum(m_p->get_enumerated()); |
| if (!e__ParametricIdentifier::is_valid_enum(enum_val)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_ParametricIdentifier."); |
| } |
| *this = enum_val; |
| } break; |
| default: |
| param.type_error("enumerated template", "@IsobusNMMessageTypes.e_ParametricIdentifier"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void e__ParametricIdentifier_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 : "@IsobusNMMessageTypes.e_ParametricIdentifier"); |
| } |
| |
| |
| const e__ParametricIdentifier N__GP__Request_parametricIdentifiers::UNBOUND_ELEM; |
| N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers() |
| { |
| val_ptr = NULL; |
| } |
| |
| N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers(null_type) |
| { |
| val_ptr = new recordof_setof_struct; |
| val_ptr->ref_count = 1; |
| val_ptr->n_elements = 0; |
| val_ptr->value_elements = NULL; |
| } |
| |
| N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers(const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| |
| N__GP__Request_parametricIdentifiers::~N__GP__Request_parametricIdentifiers() |
| { |
| clean_up(); |
| if (val_ptr != NULL) val_ptr = NULL; |
| } |
| |
| void N__GP__Request_parametricIdentifiers::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."); |
| } |
| } |
| |
| N__GP__Request_parametricIdentifiers& N__GP__Request_parametricIdentifiers::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; |
| } |
| |
| N__GP__Request_parametricIdentifiers& N__GP__Request_parametricIdentifiers::operator=(const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (this != &other_value) { |
| clean_up(); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers::operator==(null_type) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return val_ptr->n_elements == 0 ; |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers::operator==(const N__GP__Request_parametricIdentifiers& other_value) const |
| { |
| if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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; |
| } |
| |
| e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(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 e__ParametricIdentifier; |
| } |
| return *val_ptr->value_elements[index_value]; |
| } |
| |
| e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](int index_value) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers using a negative index: %d.", index_value); |
| if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: 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 e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator<<=(int rotate_count) const |
| { |
| return *this >>= (-rotate_count); |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator<<=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate left operator."); |
| return *this >>= (int)(-rotate_count); |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator>>=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate right operator."); |
| return *this >>= (int)rotate_count; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator>>=(int rotate_count) const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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; |
| N__GP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new e__ParametricIdentifier(*val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator+(const N__GP__Request_parametricIdentifiers& other_value) const |
| { |
| if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers concatenation."); |
| if (val_ptr->n_elements == 0) return other_value; |
| if (other_value.val_ptr->n_elements == 0) return *this; |
| N__GP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new e__ParametricIdentifier(*val_ptr->value_elements[i]); |
| } |
| } |
| for (int i=0; i<other_value.val_ptr->n_elements; i++) { |
| if (other_value.val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new e__ParametricIdentifier(*other_value.val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::substr(int index, int returncount) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers","element"); |
| N__GP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(returncount); |
| for (int i=0; i<returncount; i++) { |
| if (val_ptr->value_elements[i+index] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new e__ParametricIdentifier(*val_ptr->value_elements[i+index]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::replace(int index, int len, const N__GP__Request_parametricIdentifiers& repl) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers","element"); |
| N__GP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*val_ptr->value_elements[index+i+len]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::replace(int index, int len, const N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(val_ptr->value_elements[elem_count])); |
| } |
| } |
| clean_up(); |
| val_ptr = new_val_ptr; |
| } |
| if (new_size > val_ptr->n_elements) { |
| val_ptr->value_elements = (e__ParametricIdentifier**)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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: %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 = (e__ParametricIdentifier**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); |
| val_ptr->n_elements = new_size; |
| } |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::size_of() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return val_ptr->n_elements; |
| } |
| |
| int N__GP__Request_parametricIdentifiers::lengthof() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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 N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if (curr->get_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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| (*this)[curr->get_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", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| } |
| 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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if ((curr->get_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", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| } |
| break; |
| default: |
| TTCN_error("Internal error: Unknown operation type."); |
| } |
| } |
| |
| void N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::encode_text(Text_Buf& text_buf) const |
| { |
| if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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 N__GP__Request_parametricIdentifiers::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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| val_ptr->value_elements = (e__ParametricIdentifier**)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 e__ParametricIdentifier; |
| val_ptr->value_elements[elem_count]->decode_text(text_buf); |
| } |
| } |
| |
| void N__GP__Request_parametricIdentifiers::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__GP__Request_parametricIdentifiers::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__GP__Request_parametricIdentifiers::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean /*no_err*/, int sel_field, boolean first_call, const RAW_Force_Omit*){ |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int decoded_field_length=0; |
| size_t start_of_field=0; |
| if(first_call) { |
| clean_up(); |
| val_ptr=new recordof_setof_struct; |
| val_ptr->ref_count=1; |
| val_ptr->n_elements=0; |
| val_ptr->value_elements=NULL; |
| } |
| int start_field=val_ptr->n_elements; |
| if(p_td.raw->fieldlength || sel_field!=-1){ |
| int a=0; |
| if(sel_field==-1) sel_field=p_td.raw->fieldlength; |
| for(a=0;a<sel_field;a++){ |
| decoded_field_length=(*this)[a+start_field].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| } |
| if(a==0) val_ptr->n_elements=0; |
| } else { |
| if(limit==0){ |
| if(!first_call) return -1; |
| val_ptr->n_elements=0; |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| int a=start_field; |
| while(limit>0){ |
| start_of_field=p_buf.get_pos_bit(); |
| decoded_field_length=(*this)[a].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0){ |
| delete &(*this)[a]; |
| val_ptr->n_elements--; |
| p_buf.set_pos_bit(start_of_field); |
| if(a>start_field){ |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } else return -1; |
| } |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| a++; |
| } |
| } |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| |
| int N__GP__Request_parametricIdentifiers::RAW_encode(const TTCN_Typedescriptor_t& p_td,RAW_enc_tree& myleaf) const{ |
| int encoded_length=0; |
| int encoded_num_of_records=p_td.raw->fieldlength?smaller(val_ptr->n_elements, p_td.raw->fieldlength):val_ptr->n_elements; |
| myleaf.isleaf=FALSE; |
| myleaf.rec_of=TRUE; |
| myleaf.body.node.num_of_nodes=encoded_num_of_records; |
| myleaf.body.node.nodes=init_nodes_of_enc_tree(encoded_num_of_records); |
| for(int a=0;a<encoded_num_of_records;a++){ |
| myleaf.body.node.nodes[a]=new RAW_enc_tree(TRUE,&myleaf,&(myleaf.curr_pos),a,p_td.oftype_descr->raw); |
| encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); |
| } |
| return myleaf.length=encoded_length; |
| } |
| |
| void N__GP__Request_parametricIdentifiers_template::copy_value(const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers with an unbound value."); |
| single_value.n_elements = other_value.size_of(); |
| single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(other_value[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new e__ParametricIdentifier_template; |
| } |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__GP__Request_parametricIdentifiers_template::copy_template(const N__GP__Request_parametricIdentifiers_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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(*other_value.single_value.value_elements[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new e__ParametricIdentifier_template; |
| } |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__GP__Request_parametricIdentifiers_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__GP__Request_parametricIdentifiers*)value_ptr)[value_index], legacy); |
| else return ((const N__GP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template() |
| { |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(template_sel other_value) |
| : Record_Of_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(null_type) |
| : Record_Of_Template(SPECIFIC_VALUE) |
| { |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Request_parametricIdentifiers&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers from an unbound optional field."); |
| } |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers_template& other_value) |
| : Record_Of_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__GP__Request_parametricIdentifiers_template::~N__GP__Request_parametricIdentifiers_template() |
| { |
| clean_up(); |
| } |
| |
| void N__GP__Request_parametricIdentifiers_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: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(null_type) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| return *this; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Request_parametricIdentifiers&)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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| } |
| return *this; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const N__GP__Request_parametricIdentifiers_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| break; |
| } |
| return *single_value.value_elements[index_value]; |
| } |
| |
| e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](int index_value) const |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers using a negative index: %d.", index_value); |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: 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 e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| void N__GP__Request_parametricIdentifiers_template::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| 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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 e__ParametricIdentifier_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 = (e__ParametricIdentifier_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); |
| single_value.n_elements = new_size; |
| } |
| } |
| |
| int N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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; i<elem_count; i++) { |
| switch (single_value.value_elements[i]->get_selection()) { |
| case OMIT_VALUE: |
| TTCN_error("Performing %sof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers containing complemented list.", op_name); |
| default: |
| TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.", op_name); |
| } |
| return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_template::match(const N__GP__Request_parametricIdentifiers& 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; |
| default: |
| TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_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; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| N__GP__Request_parametricIdentifiers 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; |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_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); |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_template::replace(int index, int len, const N__GP__Request_parametricIdentifiers_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()); |
| } |
| |
| N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_template::replace(int index, int len, const N__GP__Request_parametricIdentifiers& 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 N__GP__Request_parametricIdentifiers_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| clean_up(); |
| switch (template_type) { |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = list_length; |
| value_list.list_value = new N__GP__Request_parametricIdentifiers_template[list_length]; |
| break; |
| default: |
| TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| } |
| set_selection(template_type); |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void N__GP__Request_parametricIdentifiers_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 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; |
| default: |
| log_generic(); |
| } |
| log_restricted(); |
| log_ifpresent(); |
| } |
| |
| void N__GP__Request_parametricIdentifiers_template::log_match(const N__GP__Request_parametricIdentifiers& 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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| } |
| } |
| |
| void N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| } |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void N__GP__Request_parametricIdentifiers_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: { |
| N__GP__Request_parametricIdentifiers_template temp; |
| temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = temp; |
| break; } |
| case Module_Param::MP_Indexed_List: |
| if (template_selection!=SPECIFIC_VALUE) set_size(0); |
| for (size_t p_i=0; p_i<param.get_size(); ++p_i) { |
| (*this)[(int)(param.get_elem(p_i)->get_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_i<param.get_size(); ++p_i) { |
| switch (param.get_elem(p_i)->get_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_i<param_i->get_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; |
| default: |
| param.type_error("record of template", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| set_length_range(param); |
| } |
| |
| void N__GP__Request_parametricIdentifiers_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; i<single_value.n_elements; i++) single_value.value_elements[i]->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| 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 : "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers"); |
| } |
| |
| boolean N__GP__Request_parametricIdentifiers_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); |
| } |
| } |
| N__GP__Request::N__GP__Request() |
| { |
| } |
| |
| N__GP__Request::N__GP__Request(const INTEGER& par_msgFunction, |
| const N__GP__Request_parametricIdentifiers& par_parametricIdentifiers) |
| : field_msgFunction(par_msgFunction), |
| field_parametricIdentifiers(par_parametricIdentifiers) |
| { |
| } |
| |
| N__GP__Request::N__GP__Request(const N__GP__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| else field_parametricIdentifiers.clean_up(); |
| } |
| |
| void N__GP__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_parametricIdentifiers.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__GP__Request::get_descriptor() const { return &N__GP__Request_descr_; } |
| N__GP__Request& N__GP__Request::operator=(const N__GP__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| else field_parametricIdentifiers.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Request::operator==(const N__GP__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_parametricIdentifiers==other_value.field_parametricIdentifiers; |
| } |
| |
| boolean N__GP__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_parametricIdentifiers.is_bound()); |
| } |
| boolean N__GP__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_parametricIdentifiers.is_value(); |
| } |
| void N__GP__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| field_parametricIdentifiers.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__GP__Request::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_GP_Request has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "parametricIdentifiers")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| parametricIdentifiers().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Request"); |
| } |
| } |
| |
| void N__GP__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (parametricIdentifiers().is_bound()) parametricIdentifiers().set_implicit_omit(); |
| } |
| |
| void N__GP__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_parametricIdentifiers.encode_text(text_buf); |
| } |
| |
| void N__GP__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_parametricIdentifiers.decode_text(text_buf); |
| } |
| |
| void N__GP__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__GP__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__GP__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, N__GP__Request_parametricIdentifiers_descr_.raw->forceomit); |
| decoded_field_length = field_parametricIdentifiers.RAW_decode(N__GP__Request_parametricIdentifiers_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__GP__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, N__GP__Request_parametricIdentifiers_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_parametricIdentifiers.RAW_encode(N__GP__Request_parametricIdentifiers_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__GP__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| N__GP__Request_parametricIdentifiers_template field_parametricIdentifiers; |
| }; |
| |
| void N__GP__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_parametricIdentifiers = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__GP__Request_template::copy_value(const N__GP__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.parametricIdentifiers().is_bound()) { |
| single_value->field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| } else { |
| single_value->field_parametricIdentifiers.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__GP__Request_template::copy_template(const N__GP__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.parametricIdentifiers().get_selection()) { |
| single_value->field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| } else { |
| single_value->field_parametricIdentifiers.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__GP__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__GP__Request_template::N__GP__Request_template() |
| { |
| } |
| |
| N__GP__Request_template::N__GP__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__GP__Request_template::N__GP__Request_template(const N__GP__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__GP__Request_template::N__GP__Request_template(const OPTIONAL<N__GP__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Request from an unbound optional field."); |
| } |
| } |
| |
| N__GP__Request_template::N__GP__Request_template(const N__GP__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__GP__Request_template::~N__GP__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__GP__Request_template& N__GP__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__GP__Request_template& N__GP__Request_template::operator=(const N__GP__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__GP__Request_template& N__GP__Request_template::operator=(const OPTIONAL<N__GP__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Request&)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 @IsobusNMMessageTypes.N_GP_Request."); |
| } |
| return *this; |
| } |
| |
| N__GP__Request_template& N__GP__Request_template::operator=(const N__GP__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Request_template::match(const N__GP__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.parametricIdentifiers().is_bound()) return FALSE; |
| if(!single_value->field_parametricIdentifiers.match(other_value.parametricIdentifiers(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__GP__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_parametricIdentifiers.is_bound() |
| ; |
| } |
| |
| boolean N__GP__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_parametricIdentifiers.is_value(); |
| } |
| |
| void N__GP__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__GP__Request N__GP__Request_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 @IsobusNMMessageTypes.N_GP_Request."); |
| N__GP__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_parametricIdentifiers.is_bound()) { |
| ret_val.parametricIdentifiers() = single_value->field_parametricIdentifiers.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__GP__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__GP__Request_template[list_length]; |
| } |
| |
| N__GP__Request_template& N__GP__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__GP__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__GP__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| N__GP__Request_parametricIdentifiers_template& N__GP__Request_template::parametricIdentifiers() |
| { |
| set_specific(); |
| return single_value->field_parametricIdentifiers; |
| } |
| |
| const N__GP__Request_parametricIdentifiers_template& N__GP__Request_template::parametricIdentifiers() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field parametricIdentifiers of a non-specific template of type @IsobusNMMessageTypes.N_GP_Request."); |
| return single_value->field_parametricIdentifiers; |
| } |
| |
| int N__GP__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request 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 @IsobusNMMessageTypes.N_GP_Request 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 @IsobusNMMessageTypes.N_GP_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request."); |
| } |
| return 0; |
| } |
| |
| void N__GP__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| single_value->field_parametricIdentifiers.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__GP__Request_template::log_match(const N__GP__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_parametricIdentifiers.match(match_value.parametricIdentifiers(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".parametricIdentifiers"); |
| single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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 N__GP__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_parametricIdentifiers.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 @IsobusNMMessageTypes.N_GP_Request."); |
| } |
| } |
| |
| void N__GP__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_parametricIdentifiers.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 N__GP__Request_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 @IsobusNMMessageTypes.N_GP_Request."); |
| } |
| } |
| |
| void N__GP__Request_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: { |
| N__GP__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_GP_Request has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "parametricIdentifiers")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| parametricIdentifiers().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__GP__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Request"); |
| single_value->field_parametricIdentifiers.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Request"); |
| 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 : "@IsobusNMMessageTypes.N_GP_Request"); |
| } |
| |
| boolean N__GP__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__GP__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void RequestedParametric::copy_value(const RequestedParametric& other_value) |
| { |
| switch (other_value.union_selection) { |
| case ALT_buffersize: |
| field_buffersize = new OCTETSTRING(*other_value.field_buffersize); |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| field_maximumFilterDatabaseSize = new OCTETSTRING(*other_value.field_maximumFilterDatabaseSize); |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| field_numberOfFilterDatabaseEntries = new OCTETSTRING(*other_value.field_numberOfFilterDatabaseEntries); |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesReceivedPerSecond); |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesForwardedPerSecond); |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesFilteredPerSecond); |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| field_maximumTransitDelayTime__ms = new OCTETSTRING(*other_value.field_maximumTransitDelayTime__ms); |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| field_averageTransitDelayTime__ms = new OCTETSTRING(*other_value.field_averageTransitDelayTime__ms); |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING(*other_value.field_numberOfMessagesLostDueToBufferOverflow); |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING(*other_value.field_numberOfMessagesWithExcessTransitDelayTime); |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesReceivedPerSecond); |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesForwardedPerSecond); |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesFilteredPerSecond); |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING(*other_value.field_uptimeSinceLastPowerOnReset__s); |
| break; |
| case ALT_numberOfPorts: |
| field_numberOfPorts = new OCTETSTRING(*other_value.field_numberOfPorts); |
| break; |
| case ALT_networkInterconnectionUnitType: |
| field_networkInterconnectionUnitType = new OCTETSTRING(*other_value.field_networkInterconnectionUnitType); |
| break; |
| case ALT_reserved: |
| field_reserved = new OCTETSTRING(*other_value.field_reserved); |
| break; |
| default: |
| TTCN_error("Assignment of an unbound union value of type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| union_selection = other_value.union_selection; |
| } |
| |
| RequestedParametric::RequestedParametric() |
| { |
| union_selection = UNBOUND_VALUE; |
| } |
| |
| RequestedParametric::RequestedParametric(const RequestedParametric& other_value) |
| : Base_Type(){ |
| copy_value(other_value); |
| } |
| |
| RequestedParametric::~RequestedParametric() |
| { |
| clean_up(); |
| } |
| |
| RequestedParametric& RequestedParametric::operator=(const RequestedParametric& other_value) |
| { |
| if (this != &other_value) { |
| clean_up(); |
| copy_value(other_value); |
| } |
| return *this; |
| } |
| |
| boolean RequestedParametric::operator==(const RequestedParametric& other_value) const |
| { |
| if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (union_selection != other_value.union_selection) return FALSE; |
| switch (union_selection) { |
| case ALT_buffersize: |
| return *field_buffersize == *other_value.field_buffersize; |
| case ALT_maximumFilterDatabaseSize: |
| return *field_maximumFilterDatabaseSize == *other_value.field_maximumFilterDatabaseSize; |
| case ALT_numberOfFilterDatabaseEntries: |
| return *field_numberOfFilterDatabaseEntries == *other_value.field_numberOfFilterDatabaseEntries; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| return *field_maximumNumberOfMessagesReceivedPerSecond == *other_value.field_maximumNumberOfMessagesReceivedPerSecond; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| return *field_maximumNumberOfMessagesForwardedPerSecond == *other_value.field_maximumNumberOfMessagesForwardedPerSecond; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| return *field_maximumNumberOfMessagesFilteredPerSecond == *other_value.field_maximumNumberOfMessagesFilteredPerSecond; |
| case ALT_maximumTransitDelayTime__ms: |
| return *field_maximumTransitDelayTime__ms == *other_value.field_maximumTransitDelayTime__ms; |
| case ALT_averageTransitDelayTime__ms: |
| return *field_averageTransitDelayTime__ms == *other_value.field_averageTransitDelayTime__ms; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| return *field_numberOfMessagesLostDueToBufferOverflow == *other_value.field_numberOfMessagesLostDueToBufferOverflow; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| return *field_numberOfMessagesWithExcessTransitDelayTime == *other_value.field_numberOfMessagesWithExcessTransitDelayTime; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| return *field_averageNumberOfMessagesReceivedPerSecond == *other_value.field_averageNumberOfMessagesReceivedPerSecond; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| return *field_averageNumberOfMessagesForwardedPerSecond == *other_value.field_averageNumberOfMessagesForwardedPerSecond; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| return *field_averageNumberOfMessagesFilteredPerSecond == *other_value.field_averageNumberOfMessagesFilteredPerSecond; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| return *field_uptimeSinceLastPowerOnReset__s == *other_value.field_uptimeSinceLastPowerOnReset__s; |
| case ALT_numberOfPorts: |
| return *field_numberOfPorts == *other_value.field_numberOfPorts; |
| case ALT_networkInterconnectionUnitType: |
| return *field_networkInterconnectionUnitType == *other_value.field_networkInterconnectionUnitType; |
| case ALT_reserved: |
| return *field_reserved == *other_value.field_reserved; |
| default: |
| return FALSE; |
| } |
| } |
| |
| OCTETSTRING& RequestedParametric::buffersize() |
| { |
| if (union_selection != ALT_buffersize) { |
| clean_up(); |
| field_buffersize = new OCTETSTRING; |
| union_selection = ALT_buffersize; |
| } |
| return *field_buffersize; |
| } |
| |
| const OCTETSTRING& RequestedParametric::buffersize() const |
| { |
| if (union_selection != ALT_buffersize) TTCN_error("Using non-selected field buffersize in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_buffersize; |
| } |
| |
| OCTETSTRING& RequestedParametric::maximumFilterDatabaseSize() |
| { |
| if (union_selection != ALT_maximumFilterDatabaseSize) { |
| clean_up(); |
| field_maximumFilterDatabaseSize = new OCTETSTRING; |
| union_selection = ALT_maximumFilterDatabaseSize; |
| } |
| return *field_maximumFilterDatabaseSize; |
| } |
| |
| const OCTETSTRING& RequestedParametric::maximumFilterDatabaseSize() const |
| { |
| if (union_selection != ALT_maximumFilterDatabaseSize) TTCN_error("Using non-selected field maximumFilterDatabaseSize in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_maximumFilterDatabaseSize; |
| } |
| |
| OCTETSTRING& RequestedParametric::numberOfFilterDatabaseEntries() |
| { |
| if (union_selection != ALT_numberOfFilterDatabaseEntries) { |
| clean_up(); |
| field_numberOfFilterDatabaseEntries = new OCTETSTRING; |
| union_selection = ALT_numberOfFilterDatabaseEntries; |
| } |
| return *field_numberOfFilterDatabaseEntries; |
| } |
| |
| const OCTETSTRING& RequestedParametric::numberOfFilterDatabaseEntries() const |
| { |
| if (union_selection != ALT_numberOfFilterDatabaseEntries) TTCN_error("Using non-selected field numberOfFilterDatabaseEntries in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_numberOfFilterDatabaseEntries; |
| } |
| |
| OCTETSTRING& RequestedParametric::maximumNumberOfMessagesReceivedPerSecond() |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesReceivedPerSecond) { |
| clean_up(); |
| field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING; |
| union_selection = ALT_maximumNumberOfMessagesReceivedPerSecond; |
| } |
| return *field_maximumNumberOfMessagesReceivedPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesReceivedPerSecond() const |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesReceivedPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesReceivedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_maximumNumberOfMessagesReceivedPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::maximumNumberOfMessagesForwardedPerSecond() |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesForwardedPerSecond) { |
| clean_up(); |
| field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING; |
| union_selection = ALT_maximumNumberOfMessagesForwardedPerSecond; |
| } |
| return *field_maximumNumberOfMessagesForwardedPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesForwardedPerSecond() const |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesForwardedPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesForwardedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_maximumNumberOfMessagesForwardedPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::maximumNumberOfMessagesFilteredPerSecond() |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesFilteredPerSecond) { |
| clean_up(); |
| field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING; |
| union_selection = ALT_maximumNumberOfMessagesFilteredPerSecond; |
| } |
| return *field_maximumNumberOfMessagesFilteredPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesFilteredPerSecond() const |
| { |
| if (union_selection != ALT_maximumNumberOfMessagesFilteredPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesFilteredPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_maximumNumberOfMessagesFilteredPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::maximumTransitDelayTime__ms() |
| { |
| if (union_selection != ALT_maximumTransitDelayTime__ms) { |
| clean_up(); |
| field_maximumTransitDelayTime__ms = new OCTETSTRING; |
| union_selection = ALT_maximumTransitDelayTime__ms; |
| } |
| return *field_maximumTransitDelayTime__ms; |
| } |
| |
| const OCTETSTRING& RequestedParametric::maximumTransitDelayTime__ms() const |
| { |
| if (union_selection != ALT_maximumTransitDelayTime__ms) TTCN_error("Using non-selected field maximumTransitDelayTime_ms in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_maximumTransitDelayTime__ms; |
| } |
| |
| OCTETSTRING& RequestedParametric::averageTransitDelayTime__ms() |
| { |
| if (union_selection != ALT_averageTransitDelayTime__ms) { |
| clean_up(); |
| field_averageTransitDelayTime__ms = new OCTETSTRING; |
| union_selection = ALT_averageTransitDelayTime__ms; |
| } |
| return *field_averageTransitDelayTime__ms; |
| } |
| |
| const OCTETSTRING& RequestedParametric::averageTransitDelayTime__ms() const |
| { |
| if (union_selection != ALT_averageTransitDelayTime__ms) TTCN_error("Using non-selected field averageTransitDelayTime_ms in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_averageTransitDelayTime__ms; |
| } |
| |
| OCTETSTRING& RequestedParametric::numberOfMessagesLostDueToBufferOverflow() |
| { |
| if (union_selection != ALT_numberOfMessagesLostDueToBufferOverflow) { |
| clean_up(); |
| field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING; |
| union_selection = ALT_numberOfMessagesLostDueToBufferOverflow; |
| } |
| return *field_numberOfMessagesLostDueToBufferOverflow; |
| } |
| |
| const OCTETSTRING& RequestedParametric::numberOfMessagesLostDueToBufferOverflow() const |
| { |
| if (union_selection != ALT_numberOfMessagesLostDueToBufferOverflow) TTCN_error("Using non-selected field numberOfMessagesLostDueToBufferOverflow in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_numberOfMessagesLostDueToBufferOverflow; |
| } |
| |
| OCTETSTRING& RequestedParametric::numberOfMessagesWithExcessTransitDelayTime() |
| { |
| if (union_selection != ALT_numberOfMessagesWithExcessTransitDelayTime) { |
| clean_up(); |
| field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING; |
| union_selection = ALT_numberOfMessagesWithExcessTransitDelayTime; |
| } |
| return *field_numberOfMessagesWithExcessTransitDelayTime; |
| } |
| |
| const OCTETSTRING& RequestedParametric::numberOfMessagesWithExcessTransitDelayTime() const |
| { |
| if (union_selection != ALT_numberOfMessagesWithExcessTransitDelayTime) TTCN_error("Using non-selected field numberOfMessagesWithExcessTransitDelayTime in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_numberOfMessagesWithExcessTransitDelayTime; |
| } |
| |
| OCTETSTRING& RequestedParametric::averageNumberOfMessagesReceivedPerSecond() |
| { |
| if (union_selection != ALT_averageNumberOfMessagesReceivedPerSecond) { |
| clean_up(); |
| field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING; |
| union_selection = ALT_averageNumberOfMessagesReceivedPerSecond; |
| } |
| return *field_averageNumberOfMessagesReceivedPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::averageNumberOfMessagesReceivedPerSecond() const |
| { |
| if (union_selection != ALT_averageNumberOfMessagesReceivedPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesReceivedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_averageNumberOfMessagesReceivedPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::averageNumberOfMessagesForwardedPerSecond() |
| { |
| if (union_selection != ALT_averageNumberOfMessagesForwardedPerSecond) { |
| clean_up(); |
| field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING; |
| union_selection = ALT_averageNumberOfMessagesForwardedPerSecond; |
| } |
| return *field_averageNumberOfMessagesForwardedPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::averageNumberOfMessagesForwardedPerSecond() const |
| { |
| if (union_selection != ALT_averageNumberOfMessagesForwardedPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesForwardedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_averageNumberOfMessagesForwardedPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::averageNumberOfMessagesFilteredPerSecond() |
| { |
| if (union_selection != ALT_averageNumberOfMessagesFilteredPerSecond) { |
| clean_up(); |
| field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING; |
| union_selection = ALT_averageNumberOfMessagesFilteredPerSecond; |
| } |
| return *field_averageNumberOfMessagesFilteredPerSecond; |
| } |
| |
| const OCTETSTRING& RequestedParametric::averageNumberOfMessagesFilteredPerSecond() const |
| { |
| if (union_selection != ALT_averageNumberOfMessagesFilteredPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesFilteredPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_averageNumberOfMessagesFilteredPerSecond; |
| } |
| |
| OCTETSTRING& RequestedParametric::uptimeSinceLastPowerOnReset__s() |
| { |
| if (union_selection != ALT_uptimeSinceLastPowerOnReset__s) { |
| clean_up(); |
| field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING; |
| union_selection = ALT_uptimeSinceLastPowerOnReset__s; |
| } |
| return *field_uptimeSinceLastPowerOnReset__s; |
| } |
| |
| const OCTETSTRING& RequestedParametric::uptimeSinceLastPowerOnReset__s() const |
| { |
| if (union_selection != ALT_uptimeSinceLastPowerOnReset__s) TTCN_error("Using non-selected field uptimeSinceLastPowerOnReset_s in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_uptimeSinceLastPowerOnReset__s; |
| } |
| |
| OCTETSTRING& RequestedParametric::numberOfPorts() |
| { |
| if (union_selection != ALT_numberOfPorts) { |
| clean_up(); |
| field_numberOfPorts = new OCTETSTRING; |
| union_selection = ALT_numberOfPorts; |
| } |
| return *field_numberOfPorts; |
| } |
| |
| const OCTETSTRING& RequestedParametric::numberOfPorts() const |
| { |
| if (union_selection != ALT_numberOfPorts) TTCN_error("Using non-selected field numberOfPorts in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_numberOfPorts; |
| } |
| |
| OCTETSTRING& RequestedParametric::networkInterconnectionUnitType() |
| { |
| if (union_selection != ALT_networkInterconnectionUnitType) { |
| clean_up(); |
| field_networkInterconnectionUnitType = new OCTETSTRING; |
| union_selection = ALT_networkInterconnectionUnitType; |
| } |
| return *field_networkInterconnectionUnitType; |
| } |
| |
| const OCTETSTRING& RequestedParametric::networkInterconnectionUnitType() const |
| { |
| if (union_selection != ALT_networkInterconnectionUnitType) TTCN_error("Using non-selected field networkInterconnectionUnitType in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_networkInterconnectionUnitType; |
| } |
| |
| OCTETSTRING& RequestedParametric::reserved() |
| { |
| if (union_selection != ALT_reserved) { |
| clean_up(); |
| field_reserved = new OCTETSTRING; |
| union_selection = ALT_reserved; |
| } |
| return *field_reserved; |
| } |
| |
| const OCTETSTRING& RequestedParametric::reserved() const |
| { |
| if (union_selection != ALT_reserved) TTCN_error("Using non-selected field reserved in a value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *field_reserved; |
| } |
| |
| boolean RequestedParametric::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 @IsobusNMMessageTypes.RequestedParametric."); |
| return union_selection == checked_selection; |
| } |
| |
| boolean RequestedParametric::is_bound() const |
| { |
| return union_selection != UNBOUND_VALUE; |
| } |
| |
| boolean RequestedParametric::is_value() const |
| { |
| switch (union_selection) { |
| case UNBOUND_VALUE: return FALSE; |
| case ALT_buffersize: return field_buffersize->is_value(); |
| case ALT_maximumFilterDatabaseSize: return field_maximumFilterDatabaseSize->is_value(); |
| case ALT_numberOfFilterDatabaseEntries: return field_numberOfFilterDatabaseEntries->is_value(); |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: return field_maximumNumberOfMessagesReceivedPerSecond->is_value(); |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: return field_maximumNumberOfMessagesForwardedPerSecond->is_value(); |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: return field_maximumNumberOfMessagesFilteredPerSecond->is_value(); |
| case ALT_maximumTransitDelayTime__ms: return field_maximumTransitDelayTime__ms->is_value(); |
| case ALT_averageTransitDelayTime__ms: return field_averageTransitDelayTime__ms->is_value(); |
| case ALT_numberOfMessagesLostDueToBufferOverflow: return field_numberOfMessagesLostDueToBufferOverflow->is_value(); |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: return field_numberOfMessagesWithExcessTransitDelayTime->is_value(); |
| case ALT_averageNumberOfMessagesReceivedPerSecond: return field_averageNumberOfMessagesReceivedPerSecond->is_value(); |
| case ALT_averageNumberOfMessagesForwardedPerSecond: return field_averageNumberOfMessagesForwardedPerSecond->is_value(); |
| case ALT_averageNumberOfMessagesFilteredPerSecond: return field_averageNumberOfMessagesFilteredPerSecond->is_value(); |
| case ALT_uptimeSinceLastPowerOnReset__s: return field_uptimeSinceLastPowerOnReset__s->is_value(); |
| case ALT_numberOfPorts: return field_numberOfPorts->is_value(); |
| case ALT_networkInterconnectionUnitType: return field_networkInterconnectionUnitType->is_value(); |
| case ALT_reserved: return field_reserved->is_value(); |
| default: TTCN_error("Invalid selection in union is_bound");} |
| } |
| |
| void RequestedParametric::clean_up() |
| { |
| switch (union_selection) { |
| case ALT_buffersize: |
| delete field_buffersize; |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| delete field_maximumFilterDatabaseSize; |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| delete field_numberOfFilterDatabaseEntries; |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| delete field_maximumNumberOfMessagesReceivedPerSecond; |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| delete field_maximumNumberOfMessagesForwardedPerSecond; |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| delete field_maximumNumberOfMessagesFilteredPerSecond; |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| delete field_maximumTransitDelayTime__ms; |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| delete field_averageTransitDelayTime__ms; |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| delete field_numberOfMessagesLostDueToBufferOverflow; |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| delete field_numberOfMessagesWithExcessTransitDelayTime; |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| delete field_averageNumberOfMessagesReceivedPerSecond; |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| delete field_averageNumberOfMessagesForwardedPerSecond; |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| delete field_averageNumberOfMessagesFilteredPerSecond; |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| delete field_uptimeSinceLastPowerOnReset__s; |
| break; |
| case ALT_numberOfPorts: |
| delete field_numberOfPorts; |
| break; |
| case ALT_networkInterconnectionUnitType: |
| delete field_networkInterconnectionUnitType; |
| break; |
| case ALT_reserved: |
| delete field_reserved; |
| break; |
| default: |
| break; |
| } |
| union_selection = UNBOUND_VALUE; |
| } |
| |
| void RequestedParametric::log() const |
| { |
| switch (union_selection) { |
| case ALT_buffersize: |
| TTCN_Logger::log_event_str("{ buffersize := "); |
| field_buffersize->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := "); |
| field_maximumFilterDatabaseSize->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := "); |
| field_numberOfFilterDatabaseEntries->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := "); |
| field_maximumNumberOfMessagesReceivedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := "); |
| field_maximumNumberOfMessagesForwardedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := "); |
| field_maximumNumberOfMessagesFilteredPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := "); |
| field_maximumTransitDelayTime__ms->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := "); |
| field_averageTransitDelayTime__ms->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := "); |
| field_numberOfMessagesLostDueToBufferOverflow->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := "); |
| field_numberOfMessagesWithExcessTransitDelayTime->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := "); |
| field_averageNumberOfMessagesReceivedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := "); |
| field_averageNumberOfMessagesForwardedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := "); |
| field_averageNumberOfMessagesFilteredPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := "); |
| field_uptimeSinceLastPowerOnReset__s->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_numberOfPorts: |
| TTCN_Logger::log_event_str("{ numberOfPorts := "); |
| field_numberOfPorts->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_networkInterconnectionUnitType: |
| TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := "); |
| field_networkInterconnectionUnitType->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_reserved: |
| TTCN_Logger::log_event_str("{ reserved := "); |
| field_reserved->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| default: |
| TTCN_Logger::log_event_unbound(); |
| } |
| } |
| |
| void RequestedParametric::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, "buffersize")) { |
| buffersize().set_param(*mp_last); |
| if (!buffersize().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "maximumFilterDatabaseSize")) { |
| maximumFilterDatabaseSize().set_param(*mp_last); |
| if (!maximumFilterDatabaseSize().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "numberOfFilterDatabaseEntries")) { |
| numberOfFilterDatabaseEntries().set_param(*mp_last); |
| if (!numberOfFilterDatabaseEntries().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesReceivedPerSecond")) { |
| maximumNumberOfMessagesReceivedPerSecond().set_param(*mp_last); |
| if (!maximumNumberOfMessagesReceivedPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesForwardedPerSecond")) { |
| maximumNumberOfMessagesForwardedPerSecond().set_param(*mp_last); |
| if (!maximumNumberOfMessagesForwardedPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesFilteredPerSecond")) { |
| maximumNumberOfMessagesFilteredPerSecond().set_param(*mp_last); |
| if (!maximumNumberOfMessagesFilteredPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "maximumTransitDelayTime_ms")) { |
| maximumTransitDelayTime__ms().set_param(*mp_last); |
| if (!maximumTransitDelayTime__ms().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "averageTransitDelayTime_ms")) { |
| averageTransitDelayTime__ms().set_param(*mp_last); |
| if (!averageTransitDelayTime__ms().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "numberOfMessagesLostDueToBufferOverflow")) { |
| numberOfMessagesLostDueToBufferOverflow().set_param(*mp_last); |
| if (!numberOfMessagesLostDueToBufferOverflow().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "numberOfMessagesWithExcessTransitDelayTime")) { |
| numberOfMessagesWithExcessTransitDelayTime().set_param(*mp_last); |
| if (!numberOfMessagesWithExcessTransitDelayTime().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesReceivedPerSecond")) { |
| averageNumberOfMessagesReceivedPerSecond().set_param(*mp_last); |
| if (!averageNumberOfMessagesReceivedPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesForwardedPerSecond")) { |
| averageNumberOfMessagesForwardedPerSecond().set_param(*mp_last); |
| if (!averageNumberOfMessagesForwardedPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesFilteredPerSecond")) { |
| averageNumberOfMessagesFilteredPerSecond().set_param(*mp_last); |
| if (!averageNumberOfMessagesFilteredPerSecond().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "uptimeSinceLastPowerOnReset_s")) { |
| uptimeSinceLastPowerOnReset__s().set_param(*mp_last); |
| if (!uptimeSinceLastPowerOnReset__s().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "numberOfPorts")) { |
| numberOfPorts().set_param(*mp_last); |
| if (!numberOfPorts().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "networkInterconnectionUnitType")) { |
| networkInterconnectionUnitType().set_param(*mp_last); |
| if (!networkInterconnectionUnitType().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "reserved")) { |
| reserved().set_param(*mp_last); |
| if (!reserved().is_bound()) clean_up(); |
| return; |
| } |
| mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.RequestedParametric.", last_name); |
| } |
| |
| void RequestedParametric::set_implicit_omit() |
| { |
| switch (union_selection) { |
| case ALT_buffersize: |
| field_buffersize->set_implicit_omit(); break; |
| case ALT_maximumFilterDatabaseSize: |
| field_maximumFilterDatabaseSize->set_implicit_omit(); break; |
| case ALT_numberOfFilterDatabaseEntries: |
| field_numberOfFilterDatabaseEntries->set_implicit_omit(); break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| field_maximumNumberOfMessagesReceivedPerSecond->set_implicit_omit(); break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| field_maximumNumberOfMessagesForwardedPerSecond->set_implicit_omit(); break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| field_maximumNumberOfMessagesFilteredPerSecond->set_implicit_omit(); break; |
| case ALT_maximumTransitDelayTime__ms: |
| field_maximumTransitDelayTime__ms->set_implicit_omit(); break; |
| case ALT_averageTransitDelayTime__ms: |
| field_averageTransitDelayTime__ms->set_implicit_omit(); break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| field_numberOfMessagesLostDueToBufferOverflow->set_implicit_omit(); break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| field_numberOfMessagesWithExcessTransitDelayTime->set_implicit_omit(); break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| field_averageNumberOfMessagesReceivedPerSecond->set_implicit_omit(); break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| field_averageNumberOfMessagesForwardedPerSecond->set_implicit_omit(); break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| field_averageNumberOfMessagesFilteredPerSecond->set_implicit_omit(); break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| field_uptimeSinceLastPowerOnReset__s->set_implicit_omit(); break; |
| case ALT_numberOfPorts: |
| field_numberOfPorts->set_implicit_omit(); break; |
| case ALT_networkInterconnectionUnitType: |
| field_networkInterconnectionUnitType->set_implicit_omit(); break; |
| case ALT_reserved: |
| field_reserved->set_implicit_omit(); break; |
| default: break; |
| } |
| } |
| |
| void RequestedParametric::encode_text(Text_Buf& text_buf) const |
| { |
| text_buf.push_int(union_selection); |
| switch (union_selection) { |
| case ALT_buffersize: |
| field_buffersize->encode_text(text_buf); |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| field_maximumFilterDatabaseSize->encode_text(text_buf); |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| field_numberOfFilterDatabaseEntries->encode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| field_maximumNumberOfMessagesReceivedPerSecond->encode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| field_maximumNumberOfMessagesForwardedPerSecond->encode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| field_maximumNumberOfMessagesFilteredPerSecond->encode_text(text_buf); |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| field_maximumTransitDelayTime__ms->encode_text(text_buf); |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| field_averageTransitDelayTime__ms->encode_text(text_buf); |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| field_numberOfMessagesLostDueToBufferOverflow->encode_text(text_buf); |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| field_numberOfMessagesWithExcessTransitDelayTime->encode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| field_averageNumberOfMessagesReceivedPerSecond->encode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| field_averageNumberOfMessagesForwardedPerSecond->encode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| field_averageNumberOfMessagesFilteredPerSecond->encode_text(text_buf); |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| field_uptimeSinceLastPowerOnReset__s->encode_text(text_buf); |
| break; |
| case ALT_numberOfPorts: |
| field_numberOfPorts->encode_text(text_buf); |
| break; |
| case ALT_networkInterconnectionUnitType: |
| field_networkInterconnectionUnitType->encode_text(text_buf); |
| break; |
| case ALT_reserved: |
| field_reserved->encode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| |
| void RequestedParametric::decode_text(Text_Buf& text_buf) |
| { |
| switch ((union_selection_type)text_buf.pull_int().get_val()) { |
| case ALT_buffersize: |
| buffersize().decode_text(text_buf); |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| maximumFilterDatabaseSize().decode_text(text_buf); |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| numberOfFilterDatabaseEntries().decode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| maximumNumberOfMessagesReceivedPerSecond().decode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| maximumNumberOfMessagesForwardedPerSecond().decode_text(text_buf); |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| maximumNumberOfMessagesFilteredPerSecond().decode_text(text_buf); |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| maximumTransitDelayTime__ms().decode_text(text_buf); |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| averageTransitDelayTime__ms().decode_text(text_buf); |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| numberOfMessagesLostDueToBufferOverflow().decode_text(text_buf); |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| numberOfMessagesWithExcessTransitDelayTime().decode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| averageNumberOfMessagesReceivedPerSecond().decode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| averageNumberOfMessagesForwardedPerSecond().decode_text(text_buf); |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| averageNumberOfMessagesFilteredPerSecond().decode_text(text_buf); |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| uptimeSinceLastPowerOnReset__s().decode_text(text_buf); |
| break; |
| case ALT_numberOfPorts: |
| numberOfPorts().decode_text(text_buf); |
| break; |
| case ALT_networkInterconnectionUnitType: |
| networkInterconnectionUnitType().decode_text(text_buf); |
| break; |
| case ALT_reserved: |
| reserved().decode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| |
| void RequestedParametric::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void RequestedParametric::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int RequestedParametric::RAW_decode( |
| const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, |
| raw_order_t top_bit_ord, boolean no_err, int sel_field, boolean, const RAW_Force_Omit* force_omit) |
| { |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int starting_pos=p_buf.get_pos_bit(); |
| if(sel_field!=-1){ |
| switch(sel_field){ |
| case 0: { |
| RAW_Force_Omit field_force_omit(0, force_omit, Buffersize_descr_.raw->forceomit); |
| decoded_length = buffersize().RAW_decode(Buffersize_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 1: { |
| RAW_Force_Omit field_force_omit(1, force_omit, MaximumFilterDatabaseSize_descr_.raw->forceomit); |
| decoded_length = maximumFilterDatabaseSize().RAW_decode(MaximumFilterDatabaseSize_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 2: { |
| RAW_Force_Omit field_force_omit(2, force_omit, NumberOfFilterDatabaseEntries_descr_.raw->forceomit); |
| decoded_length = numberOfFilterDatabaseEntries().RAW_decode(NumberOfFilterDatabaseEntries_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 3: { |
| RAW_Force_Omit field_force_omit(3, force_omit, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesReceivedPerSecond().RAW_decode(MaximumNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 4: { |
| RAW_Force_Omit field_force_omit(4, force_omit, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesForwardedPerSecond().RAW_decode(MaximumNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 5: { |
| RAW_Force_Omit field_force_omit(5, force_omit, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesFilteredPerSecond().RAW_decode(MaximumNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 6: { |
| RAW_Force_Omit field_force_omit(6, force_omit, MaximumTransitDelayTime__ms_descr_.raw->forceomit); |
| decoded_length = maximumTransitDelayTime__ms().RAW_decode(MaximumTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 7: { |
| RAW_Force_Omit field_force_omit(7, force_omit, AverageTransitDelayTime__ms_descr_.raw->forceomit); |
| decoded_length = averageTransitDelayTime__ms().RAW_decode(AverageTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 8: { |
| RAW_Force_Omit field_force_omit(8, force_omit, NumberOfMessagesLostDueToBufferOverflow_descr_.raw->forceomit); |
| decoded_length = numberOfMessagesLostDueToBufferOverflow().RAW_decode(NumberOfMessagesLostDueToBufferOverflow_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 9: { |
| RAW_Force_Omit field_force_omit(9, force_omit, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw->forceomit); |
| decoded_length = numberOfMessagesWithExcessTransitDelayTime().RAW_decode(NumberOfMessagesWithExcessTransitDelayTime_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 10: { |
| RAW_Force_Omit field_force_omit(10, force_omit, AverageNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesReceivedPerSecond().RAW_decode(AverageNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 11: { |
| RAW_Force_Omit field_force_omit(11, force_omit, AverageNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesForwardedPerSecond().RAW_decode(AverageNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 12: { |
| RAW_Force_Omit field_force_omit(12, force_omit, AverageNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesFilteredPerSecond().RAW_decode(AverageNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 13: { |
| RAW_Force_Omit field_force_omit(13, force_omit, UptimeSinceLastPowerOnReset__s_descr_.raw->forceomit); |
| decoded_length = uptimeSinceLastPowerOnReset__s().RAW_decode(UptimeSinceLastPowerOnReset__s_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 14: { |
| RAW_Force_Omit field_force_omit(14, force_omit, NumberOfPorts_descr_.raw->forceomit); |
| decoded_length = numberOfPorts().RAW_decode(NumberOfPorts_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 15: { |
| RAW_Force_Omit field_force_omit(15, force_omit, NetworkInterconnectionUnitType_descr_.raw->forceomit); |
| decoded_length = networkInterconnectionUnitType().RAW_decode(NetworkInterconnectionUnitType_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 16: { |
| RAW_Force_Omit field_force_omit(16, force_omit, Reserved_descr_.raw->forceomit); |
| decoded_length = reserved().RAW_decode(Reserved_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| default: break; |
| } |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } else { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Buffersize_descr_.raw->forceomit); |
| decoded_length = buffersize().RAW_decode(Buffersize_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_0_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, MaximumFilterDatabaseSize_descr_.raw->forceomit); |
| decoded_length = maximumFilterDatabaseSize().RAW_decode(MaximumFilterDatabaseSize_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_1_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, NumberOfFilterDatabaseEntries_descr_.raw->forceomit); |
| decoded_length = numberOfFilterDatabaseEntries().RAW_decode(NumberOfFilterDatabaseEntries_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_2_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesReceivedPerSecond().RAW_decode(MaximumNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesForwardedPerSecond().RAW_decode(MaximumNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit); |
| decoded_length = maximumNumberOfMessagesFilteredPerSecond().RAW_decode(MaximumNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_5_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, MaximumTransitDelayTime__ms_descr_.raw->forceomit); |
| decoded_length = maximumTransitDelayTime__ms().RAW_decode(MaximumTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_6_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, AverageTransitDelayTime__ms_descr_.raw->forceomit); |
| decoded_length = averageTransitDelayTime__ms().RAW_decode(AverageTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_7_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_8_force_omit(8, force_omit, NumberOfMessagesLostDueToBufferOverflow_descr_.raw->forceomit); |
| decoded_length = numberOfMessagesLostDueToBufferOverflow().RAW_decode(NumberOfMessagesLostDueToBufferOverflow_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_8_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_9_force_omit(9, force_omit, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw->forceomit); |
| decoded_length = numberOfMessagesWithExcessTransitDelayTime().RAW_decode(NumberOfMessagesWithExcessTransitDelayTime_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_9_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_10_force_omit(10, force_omit, AverageNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesReceivedPerSecond().RAW_decode(AverageNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_10_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_11_force_omit(11, force_omit, AverageNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesForwardedPerSecond().RAW_decode(AverageNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_11_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_12_force_omit(12, force_omit, AverageNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit); |
| decoded_length = averageNumberOfMessagesFilteredPerSecond().RAW_decode(AverageNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_12_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_13_force_omit(13, force_omit, UptimeSinceLastPowerOnReset__s_descr_.raw->forceomit); |
| decoded_length = uptimeSinceLastPowerOnReset__s().RAW_decode(UptimeSinceLastPowerOnReset__s_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_13_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_14_force_omit(14, force_omit, NumberOfPorts_descr_.raw->forceomit); |
| decoded_length = numberOfPorts().RAW_decode(NumberOfPorts_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_14_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_15_force_omit(15, force_omit, NetworkInterconnectionUnitType_descr_.raw->forceomit); |
| decoded_length = networkInterconnectionUnitType().RAW_decode(NetworkInterconnectionUnitType_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_15_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_16_force_omit(16, force_omit, Reserved_descr_.raw->forceomit); |
| decoded_length = reserved().RAW_decode(Reserved_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_16_force_omit); |
| if (decoded_length >= 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } |
| } |
| clean_up(); |
| return -1; |
| } |
| |
| int RequestedParametric::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const |
| { |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 17; myleaf.body.node.nodes = init_nodes_of_enc_tree(17); |
| memset(myleaf.body.node.nodes, 0, 17 * sizeof(RAW_enc_tree *)); |
| switch (union_selection) { |
| case ALT_buffersize: |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, Buffersize_descr_.raw); |
| encoded_length = field_buffersize->RAW_encode(Buffersize_descr_, *myleaf.body.node.nodes[0]); |
| myleaf.body.node.nodes[0]->coding_descr = &Buffersize_descr_; |
| break; |
| case ALT_maximumFilterDatabaseSize: |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, MaximumFilterDatabaseSize_descr_.raw); |
| encoded_length = field_maximumFilterDatabaseSize->RAW_encode(MaximumFilterDatabaseSize_descr_, *myleaf.body.node.nodes[1]); |
| myleaf.body.node.nodes[1]->coding_descr = &MaximumFilterDatabaseSize_descr_; |
| break; |
| case ALT_numberOfFilterDatabaseEntries: |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, NumberOfFilterDatabaseEntries_descr_.raw); |
| encoded_length = field_numberOfFilterDatabaseEntries->RAW_encode(NumberOfFilterDatabaseEntries_descr_, *myleaf.body.node.nodes[2]); |
| myleaf.body.node.nodes[2]->coding_descr = &NumberOfFilterDatabaseEntries_descr_; |
| break; |
| case ALT_maximumNumberOfMessagesReceivedPerSecond: |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw); |
| encoded_length = field_maximumNumberOfMessagesReceivedPerSecond->RAW_encode(MaximumNumberOfMessagesReceivedPerSecond_descr_, *myleaf.body.node.nodes[3]); |
| myleaf.body.node.nodes[3]->coding_descr = &MaximumNumberOfMessagesReceivedPerSecond_descr_; |
| break; |
| case ALT_maximumNumberOfMessagesForwardedPerSecond: |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw); |
| encoded_length = field_maximumNumberOfMessagesForwardedPerSecond->RAW_encode(MaximumNumberOfMessagesForwardedPerSecond_descr_, *myleaf.body.node.nodes[4]); |
| myleaf.body.node.nodes[4]->coding_descr = &MaximumNumberOfMessagesForwardedPerSecond_descr_; |
| break; |
| case ALT_maximumNumberOfMessagesFilteredPerSecond: |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw); |
| encoded_length = field_maximumNumberOfMessagesFilteredPerSecond->RAW_encode(MaximumNumberOfMessagesFilteredPerSecond_descr_, *myleaf.body.node.nodes[5]); |
| myleaf.body.node.nodes[5]->coding_descr = &MaximumNumberOfMessagesFilteredPerSecond_descr_; |
| break; |
| case ALT_maximumTransitDelayTime__ms: |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, MaximumTransitDelayTime__ms_descr_.raw); |
| encoded_length = field_maximumTransitDelayTime__ms->RAW_encode(MaximumTransitDelayTime__ms_descr_, *myleaf.body.node.nodes[6]); |
| myleaf.body.node.nodes[6]->coding_descr = &MaximumTransitDelayTime__ms_descr_; |
| break; |
| case ALT_averageTransitDelayTime__ms: |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, AverageTransitDelayTime__ms_descr_.raw); |
| encoded_length = field_averageTransitDelayTime__ms->RAW_encode(AverageTransitDelayTime__ms_descr_, *myleaf.body.node.nodes[7]); |
| myleaf.body.node.nodes[7]->coding_descr = &AverageTransitDelayTime__ms_descr_; |
| break; |
| case ALT_numberOfMessagesLostDueToBufferOverflow: |
| myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, NumberOfMessagesLostDueToBufferOverflow_descr_.raw); |
| encoded_length = field_numberOfMessagesLostDueToBufferOverflow->RAW_encode(NumberOfMessagesLostDueToBufferOverflow_descr_, *myleaf.body.node.nodes[8]); |
| myleaf.body.node.nodes[8]->coding_descr = &NumberOfMessagesLostDueToBufferOverflow_descr_; |
| break; |
| case ALT_numberOfMessagesWithExcessTransitDelayTime: |
| myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw); |
| encoded_length = field_numberOfMessagesWithExcessTransitDelayTime->RAW_encode(NumberOfMessagesWithExcessTransitDelayTime_descr_, *myleaf.body.node.nodes[9]); |
| myleaf.body.node.nodes[9]->coding_descr = &NumberOfMessagesWithExcessTransitDelayTime_descr_; |
| break; |
| case ALT_averageNumberOfMessagesReceivedPerSecond: |
| myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, AverageNumberOfMessagesReceivedPerSecond_descr_.raw); |
| encoded_length = field_averageNumberOfMessagesReceivedPerSecond->RAW_encode(AverageNumberOfMessagesReceivedPerSecond_descr_, *myleaf.body.node.nodes[10]); |
| myleaf.body.node.nodes[10]->coding_descr = &AverageNumberOfMessagesReceivedPerSecond_descr_; |
| break; |
| case ALT_averageNumberOfMessagesForwardedPerSecond: |
| myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, AverageNumberOfMessagesForwardedPerSecond_descr_.raw); |
| encoded_length = field_averageNumberOfMessagesForwardedPerSecond->RAW_encode(AverageNumberOfMessagesForwardedPerSecond_descr_, *myleaf.body.node.nodes[11]); |
| myleaf.body.node.nodes[11]->coding_descr = &AverageNumberOfMessagesForwardedPerSecond_descr_; |
| break; |
| case ALT_averageNumberOfMessagesFilteredPerSecond: |
| myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, AverageNumberOfMessagesFilteredPerSecond_descr_.raw); |
| encoded_length = field_averageNumberOfMessagesFilteredPerSecond->RAW_encode(AverageNumberOfMessagesFilteredPerSecond_descr_, *myleaf.body.node.nodes[12]); |
| myleaf.body.node.nodes[12]->coding_descr = &AverageNumberOfMessagesFilteredPerSecond_descr_; |
| break; |
| case ALT_uptimeSinceLastPowerOnReset__s: |
| myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, UptimeSinceLastPowerOnReset__s_descr_.raw); |
| encoded_length = field_uptimeSinceLastPowerOnReset__s->RAW_encode(UptimeSinceLastPowerOnReset__s_descr_, *myleaf.body.node.nodes[13]); |
| myleaf.body.node.nodes[13]->coding_descr = &UptimeSinceLastPowerOnReset__s_descr_; |
| break; |
| case ALT_numberOfPorts: |
| myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, NumberOfPorts_descr_.raw); |
| encoded_length = field_numberOfPorts->RAW_encode(NumberOfPorts_descr_, *myleaf.body.node.nodes[14]); |
| myleaf.body.node.nodes[14]->coding_descr = &NumberOfPorts_descr_; |
| break; |
| case ALT_networkInterconnectionUnitType: |
| myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, NetworkInterconnectionUnitType_descr_.raw); |
| encoded_length = field_networkInterconnectionUnitType->RAW_encode(NetworkInterconnectionUnitType_descr_, *myleaf.body.node.nodes[15]); |
| myleaf.body.node.nodes[15]->coding_descr = &NetworkInterconnectionUnitType_descr_; |
| break; |
| case ALT_reserved: |
| myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, Reserved_descr_.raw); |
| encoded_length = field_reserved->RAW_encode(Reserved_descr_, *myleaf.body.node.nodes[16]); |
| myleaf.body.node.nodes[16]->coding_descr = &Reserved_descr_; |
| break; |
| default: |
| TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| } |
| return encoded_length; |
| } |
| |
| void RequestedParametric_template::copy_value(const RequestedParametric& other_value) |
| { |
| single_value.union_selection = other_value.get_selection(); |
| switch (single_value.union_selection) { |
| case RequestedParametric::ALT_buffersize: |
| single_value.field_buffersize = new OCTETSTRING_template(other_value.buffersize()); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(other_value.maximumFilterDatabaseSize()); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(other_value.numberOfFilterDatabaseEntries()); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesReceivedPerSecond()); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesForwardedPerSecond()); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesFilteredPerSecond()); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(other_value.maximumTransitDelayTime__ms()); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(other_value.averageTransitDelayTime__ms()); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(other_value.numberOfMessagesLostDueToBufferOverflow()); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(other_value.numberOfMessagesWithExcessTransitDelayTime()); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesReceivedPerSecond()); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesForwardedPerSecond()); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesFilteredPerSecond()); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(other_value.uptimeSinceLastPowerOnReset__s()); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| single_value.field_numberOfPorts = new OCTETSTRING_template(other_value.numberOfPorts()); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(other_value.networkInterconnectionUnitType()); |
| break; |
| case RequestedParametric::ALT_reserved: |
| single_value.field_reserved = new OCTETSTRING_template(other_value.reserved()); |
| break; |
| default: |
| TTCN_error("Initializing a template with an unbound value of type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void RequestedParametric_template::copy_template(const RequestedParametric_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 RequestedParametric::ALT_buffersize: |
| single_value.field_buffersize = new OCTETSTRING_template(*other_value.single_value.field_buffersize); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(*other_value.single_value.field_maximumFilterDatabaseSize); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(*other_value.single_value.field_numberOfFilterDatabaseEntries); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesReceivedPerSecond); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesForwardedPerSecond); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesFilteredPerSecond); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(*other_value.single_value.field_maximumTransitDelayTime__ms); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(*other_value.single_value.field_averageTransitDelayTime__ms); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(*other_value.single_value.field_numberOfMessagesLostDueToBufferOverflow); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(*other_value.single_value.field_numberOfMessagesWithExcessTransitDelayTime); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesReceivedPerSecond); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesForwardedPerSecond); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesFilteredPerSecond); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(*other_value.single_value.field_uptimeSinceLastPowerOnReset__s); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| single_value.field_numberOfPorts = new OCTETSTRING_template(*other_value.single_value.field_numberOfPorts); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(*other_value.single_value.field_networkInterconnectionUnitType); |
| break; |
| case RequestedParametric::ALT_reserved: |
| single_value.field_reserved = new OCTETSTRING_template(*other_value.single_value.field_reserved); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new RequestedParametric_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; |
| default: |
| TTCN_error("Copying an uninitialized template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| set_selection(other_value); |
| } |
| |
| RequestedParametric_template::RequestedParametric_template() |
| { |
| } |
| |
| RequestedParametric_template::RequestedParametric_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| RequestedParametric_template::RequestedParametric_template(const RequestedParametric& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| RequestedParametric_template::RequestedParametric_template(const OPTIONAL<RequestedParametric>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const RequestedParametric&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of union type @IsobusNMMessageTypes.RequestedParametric from an unbound optional field."); |
| } |
| } |
| |
| RequestedParametric_template::RequestedParametric_template(const RequestedParametric_template& other_value) |
| : Base_Template(){ |
| copy_template(other_value); |
| } |
| |
| RequestedParametric_template::~RequestedParametric_template() |
| { |
| clean_up(); |
| } |
| |
| void RequestedParametric_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| switch (single_value.union_selection) { |
| case RequestedParametric::ALT_buffersize: |
| delete single_value.field_buffersize; |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| delete single_value.field_maximumFilterDatabaseSize; |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| delete single_value.field_numberOfFilterDatabaseEntries; |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| delete single_value.field_maximumNumberOfMessagesReceivedPerSecond; |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| delete single_value.field_maximumNumberOfMessagesForwardedPerSecond; |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| delete single_value.field_maximumNumberOfMessagesFilteredPerSecond; |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| delete single_value.field_maximumTransitDelayTime__ms; |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| delete single_value.field_averageTransitDelayTime__ms; |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| delete single_value.field_numberOfMessagesLostDueToBufferOverflow; |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| delete single_value.field_numberOfMessagesWithExcessTransitDelayTime; |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| delete single_value.field_averageNumberOfMessagesReceivedPerSecond; |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| delete single_value.field_averageNumberOfMessagesForwardedPerSecond; |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| delete single_value.field_averageNumberOfMessagesFilteredPerSecond; |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| delete single_value.field_uptimeSinceLastPowerOnReset__s; |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| delete single_value.field_numberOfPorts; |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| delete single_value.field_networkInterconnectionUnitType; |
| break; |
| case RequestedParametric::ALT_reserved: |
| delete single_value.field_reserved; |
| default: |
| break; |
| } |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| RequestedParametric_template& RequestedParametric_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| RequestedParametric_template& RequestedParametric_template::operator=(const RequestedParametric& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| RequestedParametric_template& RequestedParametric_template::operator=(const OPTIONAL<RequestedParametric>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const RequestedParametric&)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 @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| return *this; |
| } |
| |
| RequestedParametric_template& RequestedParametric_template::operator=(const RequestedParametric_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean RequestedParametric_template::match(const RequestedParametric& 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: |
| { |
| RequestedParametric::union_selection_type value_selection = other_value.get_selection(); |
| if (value_selection == RequestedParametric::UNBOUND_VALUE) return FALSE; |
| if (value_selection != single_value.union_selection) return FALSE; |
| switch (value_selection) { |
| case RequestedParametric::ALT_buffersize: |
| return single_value.field_buffersize->match(other_value.buffersize(), legacy); |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| return single_value.field_maximumFilterDatabaseSize->match(other_value.maximumFilterDatabaseSize(), legacy); |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| return single_value.field_numberOfFilterDatabaseEntries->match(other_value.numberOfFilterDatabaseEntries(), legacy); |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| return single_value.field_maximumNumberOfMessagesReceivedPerSecond->match(other_value.maximumNumberOfMessagesReceivedPerSecond(), legacy); |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| return single_value.field_maximumNumberOfMessagesForwardedPerSecond->match(other_value.maximumNumberOfMessagesForwardedPerSecond(), legacy); |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| return single_value.field_maximumNumberOfMessagesFilteredPerSecond->match(other_value.maximumNumberOfMessagesFilteredPerSecond(), legacy); |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| return single_value.field_maximumTransitDelayTime__ms->match(other_value.maximumTransitDelayTime__ms(), legacy); |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| return single_value.field_averageTransitDelayTime__ms->match(other_value.averageTransitDelayTime__ms(), legacy); |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| return single_value.field_numberOfMessagesLostDueToBufferOverflow->match(other_value.numberOfMessagesLostDueToBufferOverflow(), legacy); |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| return single_value.field_numberOfMessagesWithExcessTransitDelayTime->match(other_value.numberOfMessagesWithExcessTransitDelayTime(), legacy); |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| return single_value.field_averageNumberOfMessagesReceivedPerSecond->match(other_value.averageNumberOfMessagesReceivedPerSecond(), legacy); |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| return single_value.field_averageNumberOfMessagesForwardedPerSecond->match(other_value.averageNumberOfMessagesForwardedPerSecond(), legacy); |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| return single_value.field_averageNumberOfMessagesFilteredPerSecond->match(other_value.averageNumberOfMessagesFilteredPerSecond(), legacy); |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| return single_value.field_uptimeSinceLastPowerOnReset__s->match(other_value.uptimeSinceLastPowerOnReset__s(), legacy); |
| case RequestedParametric::ALT_numberOfPorts: |
| return single_value.field_numberOfPorts->match(other_value.numberOfPorts(), legacy); |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| return single_value.field_networkInterconnectionUnitType->match(other_value.networkInterconnectionUnitType(), legacy); |
| case RequestedParametric::ALT_reserved: |
| return single_value.field_reserved->match(other_value.reserved(), legacy); |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| 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; |
| default: |
| TTCN_error ("Matching an uninitialized template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| return FALSE; |
| } |
| |
| boolean RequestedParametric_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| switch (single_value.union_selection) { |
| case RequestedParametric::ALT_buffersize: |
| return single_value.field_buffersize->is_value(); |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| return single_value.field_maximumFilterDatabaseSize->is_value(); |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| return single_value.field_numberOfFilterDatabaseEntries->is_value(); |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| return single_value.field_maximumNumberOfMessagesReceivedPerSecond->is_value(); |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| return single_value.field_maximumNumberOfMessagesForwardedPerSecond->is_value(); |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| return single_value.field_maximumNumberOfMessagesFilteredPerSecond->is_value(); |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| return single_value.field_maximumTransitDelayTime__ms->is_value(); |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| return single_value.field_averageTransitDelayTime__ms->is_value(); |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| return single_value.field_numberOfMessagesLostDueToBufferOverflow->is_value(); |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| return single_value.field_numberOfMessagesWithExcessTransitDelayTime->is_value(); |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| return single_value.field_averageNumberOfMessagesReceivedPerSecond->is_value(); |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| return single_value.field_averageNumberOfMessagesForwardedPerSecond->is_value(); |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| return single_value.field_averageNumberOfMessagesFilteredPerSecond->is_value(); |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| return single_value.field_uptimeSinceLastPowerOnReset__s->is_value(); |
| case RequestedParametric::ALT_numberOfPorts: |
| return single_value.field_numberOfPorts->is_value(); |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| return single_value.field_networkInterconnectionUnitType->is_value(); |
| case RequestedParametric::ALT_reserved: |
| return single_value.field_reserved->is_value(); |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| |
| RequestedParametric RequestedParametric_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 @IsobusNMMessageTypes.RequestedParametric."); |
| RequestedParametric ret_val; |
| switch (single_value.union_selection) { |
| case RequestedParametric::ALT_buffersize: |
| ret_val.buffersize() = single_value.field_buffersize->valueof(); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| ret_val.maximumFilterDatabaseSize() = single_value.field_maximumFilterDatabaseSize->valueof(); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| ret_val.numberOfFilterDatabaseEntries() = single_value.field_numberOfFilterDatabaseEntries->valueof(); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| ret_val.maximumNumberOfMessagesReceivedPerSecond() = single_value.field_maximumNumberOfMessagesReceivedPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| ret_val.maximumNumberOfMessagesForwardedPerSecond() = single_value.field_maximumNumberOfMessagesForwardedPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| ret_val.maximumNumberOfMessagesFilteredPerSecond() = single_value.field_maximumNumberOfMessagesFilteredPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| ret_val.maximumTransitDelayTime__ms() = single_value.field_maximumTransitDelayTime__ms->valueof(); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| ret_val.averageTransitDelayTime__ms() = single_value.field_averageTransitDelayTime__ms->valueof(); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| ret_val.numberOfMessagesLostDueToBufferOverflow() = single_value.field_numberOfMessagesLostDueToBufferOverflow->valueof(); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| ret_val.numberOfMessagesWithExcessTransitDelayTime() = single_value.field_numberOfMessagesWithExcessTransitDelayTime->valueof(); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| ret_val.averageNumberOfMessagesReceivedPerSecond() = single_value.field_averageNumberOfMessagesReceivedPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| ret_val.averageNumberOfMessagesForwardedPerSecond() = single_value.field_averageNumberOfMessagesForwardedPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| ret_val.averageNumberOfMessagesFilteredPerSecond() = single_value.field_averageNumberOfMessagesFilteredPerSecond->valueof(); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| ret_val.uptimeSinceLastPowerOnReset__s() = single_value.field_uptimeSinceLastPowerOnReset__s->valueof(); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| ret_val.numberOfPorts() = single_value.field_numberOfPorts->valueof(); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| ret_val.networkInterconnectionUnitType() = single_value.field_networkInterconnectionUnitType->valueof(); |
| break; |
| case RequestedParametric::ALT_reserved: |
| ret_val.reserved() = single_value.field_reserved->valueof(); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| return ret_val; |
| } |
| |
| RequestedParametric_template& RequestedParametric_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return value_list.list_value[list_index]; |
| } |
| void RequestedParametric_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new RequestedParametric_template[list_length]; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::buffersize() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_buffersize) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_buffersize = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_buffersize = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_buffersize; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_buffersize; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::buffersize() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field buffersize in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_buffersize) TTCN_error("Accessing non-selected field buffersize in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_buffersize; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::maximumFilterDatabaseSize() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumFilterDatabaseSize) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_maximumFilterDatabaseSize; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_maximumFilterDatabaseSize; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::maximumFilterDatabaseSize() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumFilterDatabaseSize in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_maximumFilterDatabaseSize) TTCN_error("Accessing non-selected field maximumFilterDatabaseSize in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_maximumFilterDatabaseSize; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::numberOfFilterDatabaseEntries() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfFilterDatabaseEntries) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_numberOfFilterDatabaseEntries; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_numberOfFilterDatabaseEntries; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::numberOfFilterDatabaseEntries() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfFilterDatabaseEntries in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_numberOfFilterDatabaseEntries) TTCN_error("Accessing non-selected field numberOfFilterDatabaseEntries in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_numberOfFilterDatabaseEntries; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesReceivedPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_maximumNumberOfMessagesReceivedPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesReceivedPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesReceivedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesReceivedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_maximumNumberOfMessagesReceivedPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesForwardedPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_maximumNumberOfMessagesForwardedPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesForwardedPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesForwardedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesForwardedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_maximumNumberOfMessagesForwardedPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesFilteredPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_maximumNumberOfMessagesFilteredPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesFilteredPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesFilteredPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesFilteredPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_maximumNumberOfMessagesFilteredPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::maximumTransitDelayTime__ms() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumTransitDelayTime__ms) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_maximumTransitDelayTime__ms; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_maximumTransitDelayTime__ms; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::maximumTransitDelayTime__ms() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumTransitDelayTime_ms in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_maximumTransitDelayTime__ms) TTCN_error("Accessing non-selected field maximumTransitDelayTime_ms in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_maximumTransitDelayTime__ms; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::averageTransitDelayTime__ms() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageTransitDelayTime__ms) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_averageTransitDelayTime__ms; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_averageTransitDelayTime__ms; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::averageTransitDelayTime__ms() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageTransitDelayTime_ms in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_averageTransitDelayTime__ms) TTCN_error("Accessing non-selected field averageTransitDelayTime_ms in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_averageTransitDelayTime__ms; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::numberOfMessagesLostDueToBufferOverflow() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_numberOfMessagesLostDueToBufferOverflow; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::numberOfMessagesLostDueToBufferOverflow() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfMessagesLostDueToBufferOverflow in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow) TTCN_error("Accessing non-selected field numberOfMessagesLostDueToBufferOverflow in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_numberOfMessagesLostDueToBufferOverflow; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::numberOfMessagesWithExcessTransitDelayTime() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_numberOfMessagesWithExcessTransitDelayTime; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::numberOfMessagesWithExcessTransitDelayTime() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfMessagesWithExcessTransitDelayTime in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime) TTCN_error("Accessing non-selected field numberOfMessagesWithExcessTransitDelayTime in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_numberOfMessagesWithExcessTransitDelayTime; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesReceivedPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_averageNumberOfMessagesReceivedPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesReceivedPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesReceivedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesReceivedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_averageNumberOfMessagesReceivedPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesForwardedPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_averageNumberOfMessagesForwardedPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesForwardedPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesForwardedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesForwardedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_averageNumberOfMessagesForwardedPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesFilteredPerSecond() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_averageNumberOfMessagesFilteredPerSecond; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesFilteredPerSecond() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesFilteredPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesFilteredPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_averageNumberOfMessagesFilteredPerSecond; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::uptimeSinceLastPowerOnReset__s() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_uptimeSinceLastPowerOnReset__s; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::uptimeSinceLastPowerOnReset__s() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field uptimeSinceLastPowerOnReset_s in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s) TTCN_error("Accessing non-selected field uptimeSinceLastPowerOnReset_s in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_uptimeSinceLastPowerOnReset__s; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::numberOfPorts() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfPorts) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfPorts = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_numberOfPorts = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_numberOfPorts; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_numberOfPorts; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::numberOfPorts() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfPorts in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_numberOfPorts) TTCN_error("Accessing non-selected field numberOfPorts in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_numberOfPorts; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::networkInterconnectionUnitType() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_networkInterconnectionUnitType) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_networkInterconnectionUnitType; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_networkInterconnectionUnitType; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::networkInterconnectionUnitType() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field networkInterconnectionUnitType in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_networkInterconnectionUnitType) TTCN_error("Accessing non-selected field networkInterconnectionUnitType in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_networkInterconnectionUnitType; |
| } |
| |
| OCTETSTRING_template& RequestedParametric_template::reserved() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_reserved) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_reserved = new OCTETSTRING_template(ANY_VALUE); |
| else single_value.field_reserved = new OCTETSTRING_template; |
| single_value.union_selection = RequestedParametric::ALT_reserved; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_reserved; |
| } |
| |
| const OCTETSTRING_template& RequestedParametric_template::reserved() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| if (single_value.union_selection != RequestedParametric::ALT_reserved) TTCN_error("Accessing non-selected field reserved in a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| return *single_value.field_reserved; |
| } |
| |
| boolean RequestedParametric_template::ischosen(RequestedParametric::union_selection_type checked_selection) const |
| { |
| if (checked_selection == RequestedParametric::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusNMMessageTypes.RequestedParametric."); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| if (single_value.union_selection == RequestedParametric::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| 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 @IsobusNMMessageTypes.RequestedParametric 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 RequestedParametric_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| switch (single_value.union_selection) { |
| case RequestedParametric::ALT_buffersize: |
| TTCN_Logger::log_event_str("{ buffersize := "); |
| single_value.field_buffersize->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := "); |
| single_value.field_maximumFilterDatabaseSize->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := "); |
| single_value.field_numberOfFilterDatabaseEntries->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := "); |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := "); |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := "); |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := "); |
| single_value.field_maximumTransitDelayTime__ms->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := "); |
| single_value.field_averageTransitDelayTime__ms->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := "); |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := "); |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := "); |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := "); |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := "); |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := "); |
| single_value.field_uptimeSinceLastPowerOnReset__s->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| TTCN_Logger::log_event_str("{ numberOfPorts := "); |
| single_value.field_numberOfPorts->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := "); |
| single_value.field_networkInterconnectionUnitType->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case RequestedParametric::ALT_reserved: |
| TTCN_Logger::log_event_str("{ reserved := "); |
| single_value.field_reserved->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| default: |
| TTCN_Logger::log_event_str("<invalid selector>"); |
| } |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void RequestedParametric_template::log_match(const RequestedParametric& 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) { |
| case RequestedParametric::ALT_buffersize: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".buffersize"); |
| single_value.field_buffersize->log_match(match_value.buffersize(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ buffersize := "); |
| single_value.field_buffersize->log_match(match_value.buffersize(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".maximumFilterDatabaseSize"); |
| single_value.field_maximumFilterDatabaseSize->log_match(match_value.maximumFilterDatabaseSize(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := "); |
| single_value.field_maximumFilterDatabaseSize->log_match(match_value.maximumFilterDatabaseSize(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".numberOfFilterDatabaseEntries"); |
| single_value.field_numberOfFilterDatabaseEntries->log_match(match_value.numberOfFilterDatabaseEntries(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := "); |
| single_value.field_numberOfFilterDatabaseEntries->log_match(match_value.numberOfFilterDatabaseEntries(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesReceivedPerSecond"); |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->log_match(match_value.maximumNumberOfMessagesReceivedPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := "); |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->log_match(match_value.maximumNumberOfMessagesReceivedPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesForwardedPerSecond"); |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->log_match(match_value.maximumNumberOfMessagesForwardedPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := "); |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->log_match(match_value.maximumNumberOfMessagesForwardedPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesFilteredPerSecond"); |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->log_match(match_value.maximumNumberOfMessagesFilteredPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := "); |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->log_match(match_value.maximumNumberOfMessagesFilteredPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".maximumTransitDelayTime_ms"); |
| single_value.field_maximumTransitDelayTime__ms->log_match(match_value.maximumTransitDelayTime__ms(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := "); |
| single_value.field_maximumTransitDelayTime__ms->log_match(match_value.maximumTransitDelayTime__ms(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".averageTransitDelayTime_ms"); |
| single_value.field_averageTransitDelayTime__ms->log_match(match_value.averageTransitDelayTime__ms(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := "); |
| single_value.field_averageTransitDelayTime__ms->log_match(match_value.averageTransitDelayTime__ms(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".numberOfMessagesLostDueToBufferOverflow"); |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->log_match(match_value.numberOfMessagesLostDueToBufferOverflow(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := "); |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->log_match(match_value.numberOfMessagesLostDueToBufferOverflow(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".numberOfMessagesWithExcessTransitDelayTime"); |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->log_match(match_value.numberOfMessagesWithExcessTransitDelayTime(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := "); |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->log_match(match_value.numberOfMessagesWithExcessTransitDelayTime(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesReceivedPerSecond"); |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->log_match(match_value.averageNumberOfMessagesReceivedPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := "); |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->log_match(match_value.averageNumberOfMessagesReceivedPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesForwardedPerSecond"); |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->log_match(match_value.averageNumberOfMessagesForwardedPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := "); |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->log_match(match_value.averageNumberOfMessagesForwardedPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesFilteredPerSecond"); |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->log_match(match_value.averageNumberOfMessagesFilteredPerSecond(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := "); |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->log_match(match_value.averageNumberOfMessagesFilteredPerSecond(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".uptimeSinceLastPowerOnReset_s"); |
| single_value.field_uptimeSinceLastPowerOnReset__s->log_match(match_value.uptimeSinceLastPowerOnReset__s(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := "); |
| single_value.field_uptimeSinceLastPowerOnReset__s->log_match(match_value.uptimeSinceLastPowerOnReset__s(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".numberOfPorts"); |
| single_value.field_numberOfPorts->log_match(match_value.numberOfPorts(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ numberOfPorts := "); |
| single_value.field_numberOfPorts->log_match(match_value.numberOfPorts(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".networkInterconnectionUnitType"); |
| single_value.field_networkInterconnectionUnitType->log_match(match_value.networkInterconnectionUnitType(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := "); |
| single_value.field_networkInterconnectionUnitType->log_match(match_value.networkInterconnectionUnitType(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case RequestedParametric::ALT_reserved: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".reserved"); |
| single_value.field_reserved->log_match(match_value.reserved(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ reserved := "); |
| single_value.field_reserved->log_match(match_value.reserved(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| default: |
| TTCN_Logger::print_logmatch_buffer(); |
| TTCN_Logger::log_event_str("<invalid selector>"); |
| } |
| } 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 RequestedParametric_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 RequestedParametric::ALT_buffersize: |
| single_value.field_buffersize->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| single_value.field_maximumFilterDatabaseSize->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| single_value.field_numberOfFilterDatabaseEntries->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| single_value.field_maximumTransitDelayTime__ms->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| single_value.field_averageTransitDelayTime__ms->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| single_value.field_uptimeSinceLastPowerOnReset__s->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| single_value.field_numberOfPorts->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| single_value.field_networkInterconnectionUnitType->encode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_reserved: |
| single_value.field_reserved->encode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| 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 @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| |
| void RequestedParametric_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| { |
| single_value.union_selection = RequestedParametric::UNBOUND_VALUE; |
| RequestedParametric::union_selection_type new_selection = (RequestedParametric::union_selection_type)text_buf.pull_int().get_val(); |
| switch (new_selection) { |
| case RequestedParametric::ALT_buffersize: |
| single_value.field_buffersize = new OCTETSTRING_template; |
| single_value.field_buffersize->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template; |
| single_value.field_maximumFilterDatabaseSize->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template; |
| single_value.field_numberOfFilterDatabaseEntries->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template; |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template; |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template; |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template; |
| single_value.field_maximumTransitDelayTime__ms->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template; |
| single_value.field_averageTransitDelayTime__ms->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template; |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template; |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template; |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template; |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template; |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template; |
| single_value.field_uptimeSinceLastPowerOnReset__s->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_numberOfPorts: |
| single_value.field_numberOfPorts = new OCTETSTRING_template; |
| single_value.field_numberOfPorts->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template; |
| single_value.field_networkInterconnectionUnitType->decode_text(text_buf); |
| break; |
| case RequestedParametric::ALT_reserved: |
| single_value.field_reserved = new OCTETSTRING_template; |
| single_value.field_reserved->decode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| 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 RequestedParametric_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 @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| } |
| |
| boolean RequestedParametric_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean RequestedParametric_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int v_idx=0; v_idx<value_list.n_values; v_idx++) |
| if (value_list.list_value[v_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void RequestedParametric_template::set_param(Module_Param& param) |
| { |
| if (dynamic_cast<Module_Param_Name*>(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 `@IsobusNMMessageTypes.RequestedParametric'"); |
| } |
| if (strcmp("buffersize", param_field) == 0) { |
| buffersize().set_param(param); |
| return; |
| } else if (strcmp("maximumFilterDatabaseSize", param_field) == 0) { |
| maximumFilterDatabaseSize().set_param(param); |
| return; |
| } else if (strcmp("numberOfFilterDatabaseEntries", param_field) == 0) { |
| numberOfFilterDatabaseEntries().set_param(param); |
| return; |
| } else if (strcmp("maximumNumberOfMessagesReceivedPerSecond", param_field) == 0) { |
| maximumNumberOfMessagesReceivedPerSecond().set_param(param); |
| return; |
| } else if (strcmp("maximumNumberOfMessagesForwardedPerSecond", param_field) == 0) { |
| maximumNumberOfMessagesForwardedPerSecond().set_param(param); |
| return; |
| } else if (strcmp("maximumNumberOfMessagesFilteredPerSecond", param_field) == 0) { |
| maximumNumberOfMessagesFilteredPerSecond().set_param(param); |
| return; |
| } else if (strcmp("maximumTransitDelayTime_ms", param_field) == 0) { |
| maximumTransitDelayTime__ms().set_param(param); |
| return; |
| } else if (strcmp("averageTransitDelayTime_ms", param_field) == 0) { |
| averageTransitDelayTime__ms().set_param(param); |
| return; |
| } else if (strcmp("numberOfMessagesLostDueToBufferOverflow", param_field) == 0) { |
| numberOfMessagesLostDueToBufferOverflow().set_param(param); |
| return; |
| } else if (strcmp("numberOfMessagesWithExcessTransitDelayTime", param_field) == 0) { |
| numberOfMessagesWithExcessTransitDelayTime().set_param(param); |
| return; |
| } else if (strcmp("averageNumberOfMessagesReceivedPerSecond", param_field) == 0) { |
| averageNumberOfMessagesReceivedPerSecond().set_param(param); |
| return; |
| } else if (strcmp("averageNumberOfMessagesForwardedPerSecond", param_field) == 0) { |
| averageNumberOfMessagesForwardedPerSecond().set_param(param); |
| return; |
| } else if (strcmp("averageNumberOfMessagesFilteredPerSecond", param_field) == 0) { |
| averageNumberOfMessagesFilteredPerSecond().set_param(param); |
| return; |
| } else if (strcmp("uptimeSinceLastPowerOnReset_s", param_field) == 0) { |
| uptimeSinceLastPowerOnReset__s().set_param(param); |
| return; |
| } else if (strcmp("numberOfPorts", param_field) == 0) { |
| numberOfPorts().set_param(param); |
| return; |
| } else if (strcmp("networkInterconnectionUnitType", param_field) == 0) { |
| networkInterconnectionUnitType().set_param(param); |
| return; |
| } else if (strcmp("reserved", param_field) == 0) { |
| reserved().set_param(param); |
| return; |
| } else param.error("Field `%s' not found in union template type `@IsobusNMMessageTypes.RequestedParametric'", 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: { |
| RequestedParametric_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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", "@IsobusNMMessageTypes.RequestedParametric"); |
| 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, "buffersize")) { |
| buffersize().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "maximumFilterDatabaseSize")) { |
| maximumFilterDatabaseSize().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "numberOfFilterDatabaseEntries")) { |
| numberOfFilterDatabaseEntries().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesReceivedPerSecond")) { |
| maximumNumberOfMessagesReceivedPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesForwardedPerSecond")) { |
| maximumNumberOfMessagesForwardedPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "maximumNumberOfMessagesFilteredPerSecond")) { |
| maximumNumberOfMessagesFilteredPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "maximumTransitDelayTime_ms")) { |
| maximumTransitDelayTime__ms().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "averageTransitDelayTime_ms")) { |
| averageTransitDelayTime__ms().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "numberOfMessagesLostDueToBufferOverflow")) { |
| numberOfMessagesLostDueToBufferOverflow().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "numberOfMessagesWithExcessTransitDelayTime")) { |
| numberOfMessagesWithExcessTransitDelayTime().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesReceivedPerSecond")) { |
| averageNumberOfMessagesReceivedPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesForwardedPerSecond")) { |
| averageNumberOfMessagesForwardedPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "averageNumberOfMessagesFilteredPerSecond")) { |
| averageNumberOfMessagesFilteredPerSecond().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "uptimeSinceLastPowerOnReset_s")) { |
| uptimeSinceLastPowerOnReset__s().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "numberOfPorts")) { |
| numberOfPorts().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "networkInterconnectionUnitType")) { |
| networkInterconnectionUnitType().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "reserved")) { |
| reserved().set_param(*mp_last); |
| break; |
| } |
| mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.RequestedParametric.", last_name); |
| } break; |
| default: |
| param.type_error("union template", "@IsobusNMMessageTypes.RequestedParametric"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void RequestedParametric_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 RequestedParametric::ALT_buffersize: |
| single_value.field_buffersize->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_maximumFilterDatabaseSize: |
| single_value.field_maximumFilterDatabaseSize->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_numberOfFilterDatabaseEntries: |
| single_value.field_numberOfFilterDatabaseEntries->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond: |
| single_value.field_maximumNumberOfMessagesReceivedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond: |
| single_value.field_maximumNumberOfMessagesForwardedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond: |
| single_value.field_maximumNumberOfMessagesFilteredPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_maximumTransitDelayTime__ms: |
| single_value.field_maximumTransitDelayTime__ms->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_averageTransitDelayTime__ms: |
| single_value.field_averageTransitDelayTime__ms->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow: |
| single_value.field_numberOfMessagesLostDueToBufferOverflow->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime: |
| single_value.field_numberOfMessagesWithExcessTransitDelayTime->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond: |
| single_value.field_averageNumberOfMessagesReceivedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond: |
| single_value.field_averageNumberOfMessagesForwardedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond: |
| single_value.field_averageNumberOfMessagesFilteredPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s: |
| single_value.field_uptimeSinceLastPowerOnReset__s->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_numberOfPorts: |
| single_value.field_numberOfPorts->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_networkInterconnectionUnitType: |
| single_value.field_networkInterconnectionUnitType->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| case RequestedParametric::ALT_reserved: |
| single_value.field_reserved->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric"); |
| return; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusNMMessageTypes.RequestedParametric."); |
| } |
| 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 : "@IsobusNMMessageTypes.RequestedParametric"); |
| } |
| |
| N__GP__Response::N__GP__Response() |
| { |
| } |
| |
| N__GP__Response::N__GP__Response(const INTEGER& par_msgFunction, |
| const N__GP__Response_requestedParametrics& par_requestedParametrics) |
| : field_msgFunction(par_msgFunction), |
| field_requestedParametrics(par_requestedParametrics) |
| { |
| } |
| |
| N__GP__Response::N__GP__Response(const N__GP__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics(); |
| else field_requestedParametrics.clean_up(); |
| } |
| |
| void N__GP__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_requestedParametrics.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__GP__Response::get_descriptor() const { return &N__GP__Response_descr_; } |
| N__GP__Response& N__GP__Response::operator=(const N__GP__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics(); |
| else field_requestedParametrics.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Response::operator==(const N__GP__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_requestedParametrics==other_value.field_requestedParametrics; |
| } |
| |
| boolean N__GP__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_requestedParametrics.is_bound()); |
| } |
| boolean N__GP__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_requestedParametrics.is_value(); |
| } |
| void N__GP__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| field_requestedParametrics.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__GP__Response::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 (2<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_GP_Response has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "requestedParametrics")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| requestedParametrics().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Response"); |
| } |
| } |
| |
| void N__GP__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (requestedParametrics().is_bound()) requestedParametrics().set_implicit_omit(); |
| } |
| |
| void N__GP__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_requestedParametrics.encode_text(text_buf); |
| } |
| |
| void N__GP__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_requestedParametrics.decode_text(text_buf); |
| } |
| |
| void N__GP__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__GP__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__GP__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, N__GP__Response_requestedParametrics_descr_.raw->forceomit); |
| decoded_field_length = field_requestedParametrics.RAW_decode(N__GP__Response_requestedParametrics_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__GP__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 2; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(2); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, N__GP__Response_requestedParametrics_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_requestedParametrics.RAW_encode(N__GP__Response_requestedParametrics_descr_, *myleaf.body.node.nodes[1]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__GP__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| N__GP__Response_requestedParametrics_template field_requestedParametrics; |
| }; |
| |
| void N__GP__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_requestedParametrics = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__GP__Response_template::copy_value(const N__GP__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.requestedParametrics().is_bound()) { |
| single_value->field_requestedParametrics = other_value.requestedParametrics(); |
| } else { |
| single_value->field_requestedParametrics.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__GP__Response_template::copy_template(const N__GP__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.requestedParametrics().get_selection()) { |
| single_value->field_requestedParametrics = other_value.requestedParametrics(); |
| } else { |
| single_value->field_requestedParametrics.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__GP__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__GP__Response_template::N__GP__Response_template() |
| { |
| } |
| |
| N__GP__Response_template::N__GP__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__GP__Response_template::N__GP__Response_template(const N__GP__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__GP__Response_template::N__GP__Response_template(const OPTIONAL<N__GP__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Response from an unbound optional field."); |
| } |
| } |
| |
| N__GP__Response_template::N__GP__Response_template(const N__GP__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__GP__Response_template::~N__GP__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__GP__Response_template& N__GP__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__GP__Response_template& N__GP__Response_template::operator=(const N__GP__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__GP__Response_template& N__GP__Response_template::operator=(const OPTIONAL<N__GP__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Response&)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 @IsobusNMMessageTypes.N_GP_Response."); |
| } |
| return *this; |
| } |
| |
| N__GP__Response_template& N__GP__Response_template::operator=(const N__GP__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Response_template::match(const N__GP__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.requestedParametrics().is_bound()) return FALSE; |
| if(!single_value->field_requestedParametrics.match(other_value.requestedParametrics(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__GP__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_requestedParametrics.is_bound() |
| ; |
| } |
| |
| boolean N__GP__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_requestedParametrics.is_value(); |
| } |
| |
| void N__GP__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__GP__Response N__GP__Response_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 @IsobusNMMessageTypes.N_GP_Response."); |
| N__GP__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_requestedParametrics.is_bound()) { |
| ret_val.requestedParametrics() = single_value->field_requestedParametrics.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__GP__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__GP__Response_template[list_length]; |
| } |
| |
| N__GP__Response_template& N__GP__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__GP__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__GP__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| N__GP__Response_requestedParametrics_template& N__GP__Response_template::requestedParametrics() |
| { |
| set_specific(); |
| return single_value->field_requestedParametrics; |
| } |
| |
| const N__GP__Response_requestedParametrics_template& N__GP__Response_template::requestedParametrics() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field requestedParametrics of a non-specific template of type @IsobusNMMessageTypes.N_GP_Response."); |
| return single_value->field_requestedParametrics; |
| } |
| |
| int N__GP__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response 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 @IsobusNMMessageTypes.N_GP_Response 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 @IsobusNMMessageTypes.N_GP_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response."); |
| } |
| return 0; |
| } |
| |
| void N__GP__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| single_value->field_requestedParametrics.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__GP__Response_template::log_match(const N__GP__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_requestedParametrics.match(match_value.requestedParametrics(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".requestedParametrics"); |
| single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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 N__GP__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_requestedParametrics.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 @IsobusNMMessageTypes.N_GP_Response."); |
| } |
| } |
| |
| void N__GP__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_requestedParametrics.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 N__GP__Response_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 @IsobusNMMessageTypes.N_GP_Response."); |
| } |
| } |
| |
| void N__GP__Response_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: { |
| N__GP__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (2<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_GP_Response has 2 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().set_param(*param.get_elem(1)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "requestedParametrics")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| requestedParametrics().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__GP__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Response"); |
| single_value->field_requestedParametrics.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Response"); |
| 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 : "@IsobusNMMessageTypes.N_GP_Response"); |
| } |
| |
| boolean N__GP__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__GP__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__GP__Reset__Statistics::N__GP__Reset__Statistics() |
| { |
| } |
| |
| N__GP__Reset__Statistics::N__GP__Reset__Statistics(const INTEGER& par_msgFunction, |
| const PortNibble& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__GP__Reset__Statistics::N__GP__Reset__Statistics(const N__GP__Reset__Statistics& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__GP__Reset__Statistics::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__GP__Reset__Statistics::get_descriptor() const { return &N__GP__Reset__Statistics_descr_; } |
| N__GP__Reset__Statistics& N__GP__Reset__Statistics::operator=(const N__GP__Reset__Statistics& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Reset__Statistics::operator==(const N__GP__Reset__Statistics& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__GP__Reset__Statistics::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__GP__Reset__Statistics::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__GP__Reset__Statistics::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__GP__Reset__Statistics::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Reset_Statistics: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| } |
| } |
| |
| void N__GP__Reset__Statistics::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__GP__Reset__Statistics::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__GP__Reset__Statistics::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__GP__Reset__Statistics::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__GP__Reset__Statistics::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__GP__Reset__Statistics::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortNibble_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortNibble_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__GP__Reset__Statistics_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__GP__Reset__Statistics_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__GP__Reset__Statistics_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__GP__Reset__Statistics_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__GP__Reset__Statistics_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__GP__Reset__Statistics_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__GP__Reset__Statistics_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__GP__Reset__Statistics_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__GP__Reset__Statistics_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__GP__Reset__Statistics_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__GP__Reset__Statistics_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__GP__Reset__Statistics_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__GP__Reset__Statistics::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__GP__Reset__Statistics_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__GP__Reset__Statistics_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__GP__Reset__Statistics_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__GP__Reset__Statistics_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__GP__Reset__Statistics_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__GP__Reset__Statistics_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__GP__Reset__Statistics_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__GP__Reset__Statistics_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__GP__Reset__Statistics_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__GP__Reset__Statistics_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__GP__Reset__Statistics_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__GP__Reset__Statistics_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__GP__Reset__Statistics_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortNibble_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__GP__Reset__Statistics_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__GP__Reset__Statistics_template::copy_value(const N__GP__Reset__Statistics& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__GP__Reset__Statistics_template::copy_template(const N__GP__Reset__Statistics_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__GP__Reset__Statistics_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template() |
| { |
| } |
| |
| N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const OPTIONAL<N__GP__Reset__Statistics>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Reset__Statistics&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics from an unbound optional field."); |
| } |
| } |
| |
| N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__GP__Reset__Statistics_template::~N__GP__Reset__Statistics_template() |
| { |
| clean_up(); |
| } |
| |
| N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const N__GP__Reset__Statistics& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const OPTIONAL<N__GP__Reset__Statistics>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__GP__Reset__Statistics&)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 @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| } |
| return *this; |
| } |
| |
| N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const N__GP__Reset__Statistics_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__GP__Reset__Statistics_template::match(const N__GP__Reset__Statistics& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__GP__Reset__Statistics_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__GP__Reset__Statistics_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__GP__Reset__Statistics_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__GP__Reset__Statistics N__GP__Reset__Statistics_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 @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| N__GP__Reset__Statistics ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__GP__Reset__Statistics_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__GP__Reset__Statistics_template[list_length]; |
| } |
| |
| N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__GP__Reset__Statistics_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__GP__Reset__Statistics_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortNibble_template& N__GP__Reset__Statistics_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortNibble_template& N__GP__Reset__Statistics_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__GP__Reset__Statistics_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics 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 @IsobusNMMessageTypes.N_GP_Reset_Statistics containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| } |
| return 0; |
| } |
| |
| void N__GP__Reset__Statistics_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__GP__Reset__Statistics_template::log_match(const N__GP__Reset__Statistics& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__GP__Reset__Statistics_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| } |
| } |
| |
| void N__GP__Reset__Statistics_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__GP__Reset__Statistics_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 @IsobusNMMessageTypes.N_GP_Reset_Statistics."); |
| } |
| } |
| |
| void N__GP__Reset__Statistics_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: { |
| N__GP__Reset__Statistics_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_GP_Reset_Statistics: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__GP__Reset__Statistics_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| 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 : "@IsobusNMMessageTypes.N_GP_Reset_Statistics"); |
| } |
| |
| boolean N__GP__Reset__Statistics_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__GP__Reset__Statistics_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| |
| const e__ParametricIdentifier N__SP__Request_parametricIdentifiers::UNBOUND_ELEM; |
| N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers() |
| { |
| val_ptr = NULL; |
| } |
| |
| N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers(null_type) |
| { |
| val_ptr = new recordof_setof_struct; |
| val_ptr->ref_count = 1; |
| val_ptr->n_elements = 0; |
| val_ptr->value_elements = NULL; |
| } |
| |
| N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers(const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| |
| N__SP__Request_parametricIdentifiers::~N__SP__Request_parametricIdentifiers() |
| { |
| clean_up(); |
| if (val_ptr != NULL) val_ptr = NULL; |
| } |
| |
| void N__SP__Request_parametricIdentifiers::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."); |
| } |
| } |
| |
| N__SP__Request_parametricIdentifiers& N__SP__Request_parametricIdentifiers::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; |
| } |
| |
| N__SP__Request_parametricIdentifiers& N__SP__Request_parametricIdentifiers::operator=(const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (this != &other_value) { |
| clean_up(); |
| val_ptr = other_value.val_ptr; |
| val_ptr->ref_count++; |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers::operator==(null_type) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return val_ptr->n_elements == 0 ; |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers::operator==(const N__SP__Request_parametricIdentifiers& other_value) const |
| { |
| if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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; |
| } |
| |
| e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(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 e__ParametricIdentifier; |
| } |
| return *val_ptr->value_elements[index_value]; |
| } |
| |
| e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](int index_value) const |
| { |
| if (val_ptr == NULL) |
| TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers using a negative index: %d.", index_value); |
| if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: 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 e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator<<=(int rotate_count) const |
| { |
| return *this >>= (-rotate_count); |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator<<=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate left operator."); |
| return *this >>= (int)(-rotate_count); |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator>>=(const INTEGER& rotate_count) const |
| { |
| rotate_count.must_bound("Unbound integer operand of rotate right operator."); |
| return *this >>= (int)rotate_count; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator>>=(int rotate_count) const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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; |
| N__SP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[(i+rc)%val_ptr->n_elements] =new e__ParametricIdentifier(*val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator+(const N__SP__Request_parametricIdentifiers& other_value) const |
| { |
| if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers concatenation."); |
| if (val_ptr->n_elements == 0) return other_value; |
| if (other_value.val_ptr->n_elements == 0) return *this; |
| N__SP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(val_ptr->n_elements+other_value.val_ptr->n_elements); |
| for (int i=0; i<val_ptr->n_elements; i++) { |
| if (val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new e__ParametricIdentifier(*val_ptr->value_elements[i]); |
| } |
| } |
| for (int i=0; i<other_value.val_ptr->n_elements; i++) { |
| if (other_value.val_ptr->value_elements[i] != NULL) { |
| ret_val.val_ptr->value_elements[i+val_ptr->n_elements] = new e__ParametricIdentifier(*other_value.val_ptr->value_elements[i]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::substr(int index, int returncount) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers","element"); |
| N__SP__Request_parametricIdentifiers ret_val; |
| ret_val.set_size(returncount); |
| for (int i=0; i<returncount; i++) { |
| if (val_ptr->value_elements[i+index] != NULL) { |
| ret_val.val_ptr->value_elements[i] = new e__ParametricIdentifier(*val_ptr->value_elements[i+index]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::replace(int index, int len, const N__SP__Request_parametricIdentifiers& repl) const |
| { |
| if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers","element"); |
| N__SP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*val_ptr->value_elements[index+i+len]); |
| } |
| } |
| return ret_val; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::replace(int index, int len, const N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(val_ptr->value_elements[elem_count])); |
| } |
| } |
| clean_up(); |
| val_ptr = new_val_ptr; |
| } |
| if (new_size > val_ptr->n_elements) { |
| val_ptr->value_elements = (e__ParametricIdentifier**)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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: %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 = (e__ParametricIdentifier**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size); |
| val_ptr->n_elements = new_size; |
| } |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::size_of() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return val_ptr->n_elements; |
| } |
| |
| int N__SP__Request_parametricIdentifiers::lengthof() const |
| { |
| if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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 N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if (curr->get_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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| (*this)[curr->get_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", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| } |
| 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; i<param.get_size(); ++i) { |
| Module_Param* const curr = param.get_elem(i); |
| if ((curr->get_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", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| } |
| break; |
| default: |
| TTCN_error("Internal error: Unknown operation type."); |
| } |
| } |
| |
| void N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::encode_text(Text_Buf& text_buf) const |
| { |
| if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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 N__SP__Request_parametricIdentifiers::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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| val_ptr->value_elements = (e__ParametricIdentifier**)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 e__ParametricIdentifier; |
| val_ptr->value_elements[elem_count]->decode_text(text_buf); |
| } |
| } |
| |
| void N__SP__Request_parametricIdentifiers::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__SP__Request_parametricIdentifiers::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__SP__Request_parametricIdentifiers::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean /*no_err*/, int sel_field, boolean first_call, const RAW_Force_Omit*){ |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int decoded_field_length=0; |
| size_t start_of_field=0; |
| if(first_call) { |
| clean_up(); |
| val_ptr=new recordof_setof_struct; |
| val_ptr->ref_count=1; |
| val_ptr->n_elements=0; |
| val_ptr->value_elements=NULL; |
| } |
| int start_field=val_ptr->n_elements; |
| if(p_td.raw->fieldlength || sel_field!=-1){ |
| int a=0; |
| if(sel_field==-1) sel_field=p_td.raw->fieldlength; |
| for(a=0;a<sel_field;a++){ |
| decoded_field_length=(*this)[a+start_field].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| } |
| if(a==0) val_ptr->n_elements=0; |
| } else { |
| if(limit==0){ |
| if(!first_call) return -1; |
| val_ptr->n_elements=0; |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| int a=start_field; |
| while(limit>0){ |
| start_of_field=p_buf.get_pos_bit(); |
| decoded_field_length=(*this)[a].RAW_decode(*p_td.oftype_descr,p_buf,limit,top_bit_ord,TRUE); |
| if(decoded_field_length < 0){ |
| delete &(*this)[a]; |
| val_ptr->n_elements--; |
| p_buf.set_pos_bit(start_of_field); |
| if(a>start_field){ |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } else return -1; |
| } |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| a++; |
| } |
| } |
| return decoded_length+p_buf.increase_pos_padd(p_td.raw->padding)+prepaddlength; |
| } |
| |
| int N__SP__Request_parametricIdentifiers::RAW_encode(const TTCN_Typedescriptor_t& p_td,RAW_enc_tree& myleaf) const{ |
| int encoded_length=0; |
| int encoded_num_of_records=p_td.raw->fieldlength?smaller(val_ptr->n_elements, p_td.raw->fieldlength):val_ptr->n_elements; |
| myleaf.isleaf=FALSE; |
| myleaf.rec_of=TRUE; |
| myleaf.body.node.num_of_nodes=encoded_num_of_records; |
| myleaf.body.node.nodes=init_nodes_of_enc_tree(encoded_num_of_records); |
| for(int a=0;a<encoded_num_of_records;a++){ |
| myleaf.body.node.nodes[a]=new RAW_enc_tree(TRUE,&myleaf,&(myleaf.curr_pos),a,p_td.oftype_descr->raw); |
| encoded_length+=(*this)[a].RAW_encode(*p_td.oftype_descr,*myleaf.body.node.nodes[a]); |
| } |
| return myleaf.length=encoded_length; |
| } |
| |
| void N__SP__Request_parametricIdentifiers_template::copy_value(const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers with an unbound value."); |
| single_value.n_elements = other_value.size_of(); |
| single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(other_value[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new e__ParametricIdentifier_template; |
| } |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__SP__Request_parametricIdentifiers_template::copy_template(const N__SP__Request_parametricIdentifiers_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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(*other_value.single_value.value_elements[elem_count]); |
| } else { |
| single_value.value_elements[elem_count] = new e__ParametricIdentifier_template; |
| } |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__SP__Request_parametricIdentifiers_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__SP__Request_parametricIdentifiers*)value_ptr)[value_index], legacy); |
| else return ((const N__SP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit(); |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template() |
| { |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(template_sel other_value) |
| : Record_Of_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(null_type) |
| : Record_Of_Template(SPECIFIC_VALUE) |
| { |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Request_parametricIdentifiers&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers from an unbound optional field."); |
| } |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers_template& other_value) |
| : Record_Of_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__SP__Request_parametricIdentifiers_template::~N__SP__Request_parametricIdentifiers_template() |
| { |
| clean_up(); |
| } |
| |
| void N__SP__Request_parametricIdentifiers_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: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(null_type) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value.n_elements = 0; |
| single_value.value_elements = NULL; |
| return *this; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Request_parametricIdentifiers&)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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| } |
| return *this; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const N__SP__Request_parametricIdentifiers_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](int index_value) |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| break; |
| } |
| return *single_value.value_elements[index_value]; |
| } |
| |
| e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| const e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](int index_value) const |
| { |
| if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers using a negative index: %d.", index_value); |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: 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 e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) const |
| { |
| index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return (*this)[(int)index_value]; |
| } |
| |
| void N__SP__Request_parametricIdentifiers_template::set_size(int new_size) |
| { |
| if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| 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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 e__ParametricIdentifier_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 = (e__ParametricIdentifier_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size); |
| single_value.n_elements = new_size; |
| } |
| } |
| |
| int N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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; i<elem_count; i++) { |
| switch (single_value.value_elements[i]->get_selection()) { |
| case OMIT_VALUE: |
| TTCN_error("Performing %sof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers containing complemented list.", op_name); |
| default: |
| TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.", op_name); |
| } |
| return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_template::match(const N__SP__Request_parametricIdentifiers& 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; |
| default: |
| TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_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; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| N__SP__Request_parametricIdentifiers 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; |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_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); |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_template::replace(int index, int len, const N__SP__Request_parametricIdentifiers_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()); |
| } |
| |
| N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_template::replace(int index, int len, const N__SP__Request_parametricIdentifiers& 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 N__SP__Request_parametricIdentifiers_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| clean_up(); |
| switch (template_type) { |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = list_length; |
| value_list.list_value = new N__SP__Request_parametricIdentifiers_template[list_length]; |
| break; |
| default: |
| TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| } |
| set_selection(template_type); |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void N__SP__Request_parametricIdentifiers_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 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; |
| default: |
| log_generic(); |
| } |
| log_restricted(); |
| log_ifpresent(); |
| } |
| |
| void N__SP__Request_parametricIdentifiers_template::log_match(const N__SP__Request_parametricIdentifiers& 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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| } |
| } |
| |
| void N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| } |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void N__SP__Request_parametricIdentifiers_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: { |
| N__SP__Request_parametricIdentifiers_template temp; |
| temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = temp; |
| break; } |
| case Module_Param::MP_Indexed_List: |
| if (template_selection!=SPECIFIC_VALUE) set_size(0); |
| for (size_t p_i=0; p_i<param.get_size(); ++p_i) { |
| (*this)[(int)(param.get_elem(p_i)->get_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_i<param.get_size(); ++p_i) { |
| switch (param.get_elem(p_i)->get_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_i<param_i->get_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; |
| default: |
| param.type_error("record of template", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| set_length_range(param); |
| } |
| |
| void N__SP__Request_parametricIdentifiers_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; i<single_value.n_elements; i++) single_value.value_elements[i]->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| 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 : "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers"); |
| } |
| |
| boolean N__SP__Request_parametricIdentifiers_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); |
| } |
| } |
| N__SP__Request::N__SP__Request() |
| { |
| } |
| |
| N__SP__Request::N__SP__Request(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const N__SP__Request_parametricIdentifiers& par_parametricIdentifiers) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_parametricIdentifiers(par_parametricIdentifiers) |
| { |
| } |
| |
| N__SP__Request::N__SP__Request(const N__SP__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| else field_parametricIdentifiers.clean_up(); |
| } |
| |
| void N__SP__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_parametricIdentifiers.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__SP__Request::get_descriptor() const { return &N__SP__Request_descr_; } |
| N__SP__Request& N__SP__Request::operator=(const N__SP__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| else field_parametricIdentifiers.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Request::operator==(const N__SP__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_parametricIdentifiers==other_value.field_parametricIdentifiers; |
| } |
| |
| boolean N__SP__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_parametricIdentifiers.is_bound()); |
| } |
| boolean N__SP__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_parametricIdentifiers.is_value(); |
| } |
| void N__SP__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| field_parametricIdentifiers.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__SP__Request::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_SP_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "parametricIdentifiers")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| parametricIdentifiers().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Request"); |
| } |
| } |
| |
| void N__SP__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (parametricIdentifiers().is_bound()) parametricIdentifiers().set_implicit_omit(); |
| } |
| |
| void N__SP__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_parametricIdentifiers.encode_text(text_buf); |
| } |
| |
| void N__SP__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_parametricIdentifiers.decode_text(text_buf); |
| } |
| |
| void N__SP__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__SP__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__SP__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__SP__Request_parametricIdentifiers_descr_.raw->forceomit); |
| decoded_field_length = field_parametricIdentifiers.RAW_decode(N__SP__Request_parametricIdentifiers_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__SP__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Request_parametricIdentifiers_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_parametricIdentifiers.RAW_encode(N__SP__Request_parametricIdentifiers_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__SP__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| N__SP__Request_parametricIdentifiers_template field_parametricIdentifiers; |
| }; |
| |
| void N__SP__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_parametricIdentifiers = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__SP__Request_template::copy_value(const N__SP__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.parametricIdentifiers().is_bound()) { |
| single_value->field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| } else { |
| single_value->field_parametricIdentifiers.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__SP__Request_template::copy_template(const N__SP__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.parametricIdentifiers().get_selection()) { |
| single_value->field_parametricIdentifiers = other_value.parametricIdentifiers(); |
| } else { |
| single_value->field_parametricIdentifiers.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__SP__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__SP__Request_template::N__SP__Request_template() |
| { |
| } |
| |
| N__SP__Request_template::N__SP__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__SP__Request_template::N__SP__Request_template(const N__SP__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__SP__Request_template::N__SP__Request_template(const OPTIONAL<N__SP__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Request from an unbound optional field."); |
| } |
| } |
| |
| N__SP__Request_template::N__SP__Request_template(const N__SP__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__SP__Request_template::~N__SP__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__SP__Request_template& N__SP__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__SP__Request_template& N__SP__Request_template::operator=(const N__SP__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__SP__Request_template& N__SP__Request_template::operator=(const OPTIONAL<N__SP__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Request&)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 @IsobusNMMessageTypes.N_SP_Request."); |
| } |
| return *this; |
| } |
| |
| N__SP__Request_template& N__SP__Request_template::operator=(const N__SP__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Request_template::match(const N__SP__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.parametricIdentifiers().is_bound()) return FALSE; |
| if(!single_value->field_parametricIdentifiers.match(other_value.parametricIdentifiers(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__SP__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_parametricIdentifiers.is_bound() |
| ; |
| } |
| |
| boolean N__SP__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_parametricIdentifiers.is_value(); |
| } |
| |
| void N__SP__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__SP__Request N__SP__Request_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 @IsobusNMMessageTypes.N_SP_Request."); |
| N__SP__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_parametricIdentifiers.is_bound()) { |
| ret_val.parametricIdentifiers() = single_value->field_parametricIdentifiers.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__SP__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__SP__Request_template[list_length]; |
| } |
| |
| N__SP__Request_template& N__SP__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__SP__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__SP__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__SP__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__SP__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request."); |
| return single_value->field_portPair; |
| } |
| |
| N__SP__Request_parametricIdentifiers_template& N__SP__Request_template::parametricIdentifiers() |
| { |
| set_specific(); |
| return single_value->field_parametricIdentifiers; |
| } |
| |
| const N__SP__Request_parametricIdentifiers_template& N__SP__Request_template::parametricIdentifiers() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field parametricIdentifiers of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request."); |
| return single_value->field_parametricIdentifiers; |
| } |
| |
| int N__SP__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request 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 @IsobusNMMessageTypes.N_SP_Request 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 @IsobusNMMessageTypes.N_SP_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request."); |
| } |
| return 0; |
| } |
| |
| void N__SP__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| single_value->field_parametricIdentifiers.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__SP__Request_template::log_match(const N__SP__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_parametricIdentifiers.match(match_value.parametricIdentifiers(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".parametricIdentifiers"); |
| single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", parametricIdentifiers := "); |
| single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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 N__SP__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_parametricIdentifiers.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 @IsobusNMMessageTypes.N_SP_Request."); |
| } |
| } |
| |
| void N__SP__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_parametricIdentifiers.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 N__SP__Request_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 @IsobusNMMessageTypes.N_SP_Request."); |
| } |
| } |
| |
| void N__SP__Request_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: { |
| N__SP__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_SP_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "parametricIdentifiers")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| parametricIdentifiers().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__SP__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request"); |
| single_value->field_parametricIdentifiers.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request"); |
| 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 : "@IsobusNMMessageTypes.N_SP_Request"); |
| } |
| |
| boolean N__SP__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__SP__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__SP__Response::N__SP__Response() |
| { |
| } |
| |
| N__SP__Response::N__SP__Response(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const N__SP__Response_requestedParametrics& par_requestedParametrics) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_requestedParametrics(par_requestedParametrics) |
| { |
| } |
| |
| N__SP__Response::N__SP__Response(const N__SP__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics(); |
| else field_requestedParametrics.clean_up(); |
| } |
| |
| void N__SP__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_requestedParametrics.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__SP__Response::get_descriptor() const { return &N__SP__Response_descr_; } |
| N__SP__Response& N__SP__Response::operator=(const N__SP__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics(); |
| else field_requestedParametrics.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Response::operator==(const N__SP__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_requestedParametrics==other_value.field_requestedParametrics; |
| } |
| |
| boolean N__SP__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_requestedParametrics.is_bound()); |
| } |
| boolean N__SP__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_requestedParametrics.is_value(); |
| } |
| void N__SP__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| field_requestedParametrics.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__SP__Response::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_SP_Response has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "requestedParametrics")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| requestedParametrics().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Response"); |
| } |
| } |
| |
| void N__SP__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (requestedParametrics().is_bound()) requestedParametrics().set_implicit_omit(); |
| } |
| |
| void N__SP__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_requestedParametrics.encode_text(text_buf); |
| } |
| |
| void N__SP__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_requestedParametrics.decode_text(text_buf); |
| } |
| |
| void N__SP__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__SP__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__SP__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__SP__Response_requestedParametrics_descr_.raw->forceomit); |
| decoded_field_length = field_requestedParametrics.RAW_decode(N__SP__Response_requestedParametrics_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__SP__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Response_requestedParametrics_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_requestedParametrics.RAW_encode(N__SP__Response_requestedParametrics_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__SP__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| N__SP__Response_requestedParametrics_template field_requestedParametrics; |
| }; |
| |
| void N__SP__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_requestedParametrics = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__SP__Response_template::copy_value(const N__SP__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.requestedParametrics().is_bound()) { |
| single_value->field_requestedParametrics = other_value.requestedParametrics(); |
| } else { |
| single_value->field_requestedParametrics.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__SP__Response_template::copy_template(const N__SP__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.requestedParametrics().get_selection()) { |
| single_value->field_requestedParametrics = other_value.requestedParametrics(); |
| } else { |
| single_value->field_requestedParametrics.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__SP__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__SP__Response_template::N__SP__Response_template() |
| { |
| } |
| |
| N__SP__Response_template::N__SP__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__SP__Response_template::N__SP__Response_template(const N__SP__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__SP__Response_template::N__SP__Response_template(const OPTIONAL<N__SP__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Response from an unbound optional field."); |
| } |
| } |
| |
| N__SP__Response_template::N__SP__Response_template(const N__SP__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__SP__Response_template::~N__SP__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__SP__Response_template& N__SP__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__SP__Response_template& N__SP__Response_template::operator=(const N__SP__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__SP__Response_template& N__SP__Response_template::operator=(const OPTIONAL<N__SP__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Response&)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 @IsobusNMMessageTypes.N_SP_Response."); |
| } |
| return *this; |
| } |
| |
| N__SP__Response_template& N__SP__Response_template::operator=(const N__SP__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Response_template::match(const N__SP__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.requestedParametrics().is_bound()) return FALSE; |
| if(!single_value->field_requestedParametrics.match(other_value.requestedParametrics(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__SP__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_requestedParametrics.is_bound() |
| ; |
| } |
| |
| boolean N__SP__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_requestedParametrics.is_value(); |
| } |
| |
| void N__SP__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__SP__Response N__SP__Response_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 @IsobusNMMessageTypes.N_SP_Response."); |
| N__SP__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_requestedParametrics.is_bound()) { |
| ret_val.requestedParametrics() = single_value->field_requestedParametrics.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__SP__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__SP__Response_template[list_length]; |
| } |
| |
| N__SP__Response_template& N__SP__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__SP__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__SP__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__SP__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__SP__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response."); |
| return single_value->field_portPair; |
| } |
| |
| N__SP__Response_requestedParametrics_template& N__SP__Response_template::requestedParametrics() |
| { |
| set_specific(); |
| return single_value->field_requestedParametrics; |
| } |
| |
| const N__SP__Response_requestedParametrics_template& N__SP__Response_template::requestedParametrics() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field requestedParametrics of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response."); |
| return single_value->field_requestedParametrics; |
| } |
| |
| int N__SP__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response 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 @IsobusNMMessageTypes.N_SP_Response 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 @IsobusNMMessageTypes.N_SP_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response."); |
| } |
| return 0; |
| } |
| |
| void N__SP__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| single_value->field_requestedParametrics.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__SP__Response_template::log_match(const N__SP__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_requestedParametrics.match(match_value.requestedParametrics(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".requestedParametrics"); |
| single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", requestedParametrics := "); |
| single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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 N__SP__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_requestedParametrics.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 @IsobusNMMessageTypes.N_SP_Response."); |
| } |
| } |
| |
| void N__SP__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_requestedParametrics.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 N__SP__Response_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 @IsobusNMMessageTypes.N_SP_Response."); |
| } |
| } |
| |
| void N__SP__Response_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: { |
| N__SP__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_SP_Response has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "requestedParametrics")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| requestedParametrics().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__SP__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response"); |
| single_value->field_requestedParametrics.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response"); |
| 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 : "@IsobusNMMessageTypes.N_SP_Response"); |
| } |
| |
| boolean N__SP__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__SP__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__SP__Reset__Statistics::N__SP__Reset__Statistics() |
| { |
| } |
| |
| N__SP__Reset__Statistics::N__SP__Reset__Statistics(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const OCTETSTRING& par_reserved3, |
| const OCTETSTRING& par_reserved4, |
| const OCTETSTRING& par_reserved5, |
| const OCTETSTRING& par_reserved6, |
| const OCTETSTRING& par_reserved7, |
| const OCTETSTRING& par_reserved8) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_reserved3(par_reserved3), |
| field_reserved4(par_reserved4), |
| field_reserved5(par_reserved5), |
| field_reserved6(par_reserved6), |
| field_reserved7(par_reserved7), |
| field_reserved8(par_reserved8) |
| { |
| } |
| |
| N__SP__Reset__Statistics::N__SP__Reset__Statistics(const N__SP__Reset__Statistics& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| |
| void N__SP__Reset__Statistics::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_reserved3.clean_up(); |
| field_reserved4.clean_up(); |
| field_reserved5.clean_up(); |
| field_reserved6.clean_up(); |
| field_reserved7.clean_up(); |
| field_reserved8.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__SP__Reset__Statistics::get_descriptor() const { return &N__SP__Reset__Statistics_descr_; } |
| N__SP__Reset__Statistics& N__SP__Reset__Statistics::operator=(const N__SP__Reset__Statistics& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3(); |
| else field_reserved3.clean_up(); |
| if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4(); |
| else field_reserved4.clean_up(); |
| if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5(); |
| else field_reserved5.clean_up(); |
| if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6(); |
| else field_reserved6.clean_up(); |
| if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7(); |
| else field_reserved7.clean_up(); |
| if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8(); |
| else field_reserved8.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Reset__Statistics::operator==(const N__SP__Reset__Statistics& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_reserved3==other_value.field_reserved3 |
| && field_reserved4==other_value.field_reserved4 |
| && field_reserved5==other_value.field_reserved5 |
| && field_reserved6==other_value.field_reserved6 |
| && field_reserved7==other_value.field_reserved7 |
| && field_reserved8==other_value.field_reserved8; |
| } |
| |
| boolean N__SP__Reset__Statistics::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_reserved3.is_bound()) |
| || (field_reserved4.is_bound()) |
| || (field_reserved5.is_bound()) |
| || (field_reserved6.is_bound()) |
| || (field_reserved7.is_bound()) |
| || (field_reserved8.is_bound()); |
| } |
| boolean N__SP__Reset__Statistics::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_reserved3.is_value() |
| && field_reserved4.is_value() |
| && field_reserved5.is_value() |
| && field_reserved6.is_value() |
| && field_reserved7.is_value() |
| && field_reserved8.is_value(); |
| } |
| void N__SP__Reset__Statistics::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__SP__Reset__Statistics::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 (8<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Reset_Statistics: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| } |
| } |
| |
| void N__SP__Reset__Statistics::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (reserved3().is_bound()) reserved3().set_implicit_omit(); |
| if (reserved4().is_bound()) reserved4().set_implicit_omit(); |
| if (reserved5().is_bound()) reserved5().set_implicit_omit(); |
| if (reserved6().is_bound()) reserved6().set_implicit_omit(); |
| if (reserved7().is_bound()) reserved7().set_implicit_omit(); |
| if (reserved8().is_bound()) reserved8().set_implicit_omit(); |
| } |
| |
| void N__SP__Reset__Statistics::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_reserved3.encode_text(text_buf); |
| field_reserved4.encode_text(text_buf); |
| field_reserved5.encode_text(text_buf); |
| field_reserved6.encode_text(text_buf); |
| field_reserved7.encode_text(text_buf); |
| field_reserved8.encode_text(text_buf); |
| } |
| |
| void N__SP__Reset__Statistics::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_reserved3.decode_text(text_buf); |
| field_reserved4.decode_text(text_buf); |
| field_reserved5.decode_text(text_buf); |
| field_reserved6.decode_text(text_buf); |
| field_reserved7.decode_text(text_buf); |
| field_reserved8.decode_text(text_buf); |
| } |
| |
| void N__SP__Reset__Statistics::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__SP__Reset__Statistics::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__SP__Reset__Statistics::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, N__SP__Reset__Statistics_reserved3_descr_.raw->forceomit); |
| decoded_field_length = field_reserved3.RAW_decode(N__SP__Reset__Statistics_reserved3_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, N__SP__Reset__Statistics_reserved4_descr_.raw->forceomit); |
| decoded_field_length = field_reserved4.RAW_decode(N__SP__Reset__Statistics_reserved4_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_4_force_omit(4, force_omit, N__SP__Reset__Statistics_reserved5_descr_.raw->forceomit); |
| decoded_field_length = field_reserved5.RAW_decode(N__SP__Reset__Statistics_reserved5_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_4_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_5_force_omit(5, force_omit, N__SP__Reset__Statistics_reserved6_descr_.raw->forceomit); |
| decoded_field_length = field_reserved6.RAW_decode(N__SP__Reset__Statistics_reserved6_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_5_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_6_force_omit(6, force_omit, N__SP__Reset__Statistics_reserved7_descr_.raw->forceomit); |
| decoded_field_length = field_reserved7.RAW_decode(N__SP__Reset__Statistics_reserved7_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_6_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_7_force_omit(7, force_omit, N__SP__Reset__Statistics_reserved8_descr_.raw->forceomit); |
| decoded_field_length = field_reserved8.RAW_decode(N__SP__Reset__Statistics_reserved8_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_7_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__SP__Reset__Statistics::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 8; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(8); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Reset__Statistics_reserved3_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__SP__Reset__Statistics_reserved4_descr_.raw); |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__SP__Reset__Statistics_reserved5_descr_.raw); |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__SP__Reset__Statistics_reserved6_descr_.raw); |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__SP__Reset__Statistics_reserved7_descr_.raw); |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__SP__Reset__Statistics_reserved8_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_reserved3.RAW_encode(N__SP__Reset__Statistics_reserved3_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_reserved4.RAW_encode(N__SP__Reset__Statistics_reserved4_descr_, *myleaf.body.node.nodes[3]); |
| encoded_length += field_reserved5.RAW_encode(N__SP__Reset__Statistics_reserved5_descr_, *myleaf.body.node.nodes[4]); |
| encoded_length += field_reserved6.RAW_encode(N__SP__Reset__Statistics_reserved6_descr_, *myleaf.body.node.nodes[5]); |
| encoded_length += field_reserved7.RAW_encode(N__SP__Reset__Statistics_reserved7_descr_, *myleaf.body.node.nodes[6]); |
| encoded_length += field_reserved8.RAW_encode(N__SP__Reset__Statistics_reserved8_descr_, *myleaf.body.node.nodes[7]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__SP__Reset__Statistics_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| OCTETSTRING_template field_reserved3; |
| OCTETSTRING_template field_reserved4; |
| OCTETSTRING_template field_reserved5; |
| OCTETSTRING_template field_reserved6; |
| OCTETSTRING_template field_reserved7; |
| OCTETSTRING_template field_reserved8; |
| }; |
| |
| void N__SP__Reset__Statistics_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_reserved3 = ANY_VALUE; |
| single_value->field_reserved4 = ANY_VALUE; |
| single_value->field_reserved5 = ANY_VALUE; |
| single_value->field_reserved6 = ANY_VALUE; |
| single_value->field_reserved7 = ANY_VALUE; |
| single_value->field_reserved8 = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__SP__Reset__Statistics_template::copy_value(const N__SP__Reset__Statistics& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.reserved3().is_bound()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (other_value.reserved4().is_bound()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (other_value.reserved5().is_bound()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (other_value.reserved6().is_bound()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (other_value.reserved7().is_bound()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (other_value.reserved8().is_bound()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__SP__Reset__Statistics_template::copy_template(const N__SP__Reset__Statistics_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) { |
| single_value->field_reserved3 = other_value.reserved3(); |
| } else { |
| single_value->field_reserved3.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) { |
| single_value->field_reserved4 = other_value.reserved4(); |
| } else { |
| single_value->field_reserved4.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) { |
| single_value->field_reserved5 = other_value.reserved5(); |
| } else { |
| single_value->field_reserved5.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) { |
| single_value->field_reserved6 = other_value.reserved6(); |
| } else { |
| single_value->field_reserved6.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) { |
| single_value->field_reserved7 = other_value.reserved7(); |
| } else { |
| single_value->field_reserved7.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) { |
| single_value->field_reserved8 = other_value.reserved8(); |
| } else { |
| single_value->field_reserved8.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__SP__Reset__Statistics_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template() |
| { |
| } |
| |
| N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const OPTIONAL<N__SP__Reset__Statistics>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Reset__Statistics&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics from an unbound optional field."); |
| } |
| } |
| |
| N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__SP__Reset__Statistics_template::~N__SP__Reset__Statistics_template() |
| { |
| clean_up(); |
| } |
| |
| N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const N__SP__Reset__Statistics& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const OPTIONAL<N__SP__Reset__Statistics>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__SP__Reset__Statistics&)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 @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| } |
| return *this; |
| } |
| |
| N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const N__SP__Reset__Statistics_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__SP__Reset__Statistics_template::match(const N__SP__Reset__Statistics& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.reserved3().is_bound()) return FALSE; |
| if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE; |
| if(!other_value.reserved4().is_bound()) return FALSE; |
| if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE; |
| if(!other_value.reserved5().is_bound()) return FALSE; |
| if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE; |
| if(!other_value.reserved6().is_bound()) return FALSE; |
| if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE; |
| if(!other_value.reserved7().is_bound()) return FALSE; |
| if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE; |
| if(!other_value.reserved8().is_bound()) return FALSE; |
| if(!single_value->field_reserved8.match(other_value.reserved8(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__SP__Reset__Statistics_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_reserved3.is_bound() |
| |
| ||single_value->field_reserved4.is_bound() |
| |
| ||single_value->field_reserved5.is_bound() |
| |
| ||single_value->field_reserved6.is_bound() |
| |
| ||single_value->field_reserved7.is_bound() |
| |
| ||single_value->field_reserved8.is_bound() |
| ; |
| } |
| |
| boolean N__SP__Reset__Statistics_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_reserved3.is_value() |
| &&single_value->field_reserved4.is_value() |
| &&single_value->field_reserved5.is_value() |
| &&single_value->field_reserved6.is_value() |
| &&single_value->field_reserved7.is_value() |
| &&single_value->field_reserved8.is_value(); |
| } |
| |
| void N__SP__Reset__Statistics_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__SP__Reset__Statistics N__SP__Reset__Statistics_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 @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| N__SP__Reset__Statistics ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_reserved3.is_bound()) { |
| ret_val.reserved3() = single_value->field_reserved3.valueof(); |
| } |
| if (single_value->field_reserved4.is_bound()) { |
| ret_val.reserved4() = single_value->field_reserved4.valueof(); |
| } |
| if (single_value->field_reserved5.is_bound()) { |
| ret_val.reserved5() = single_value->field_reserved5.valueof(); |
| } |
| if (single_value->field_reserved6.is_bound()) { |
| ret_val.reserved6() = single_value->field_reserved6.valueof(); |
| } |
| if (single_value->field_reserved7.is_bound()) { |
| ret_val.reserved7() = single_value->field_reserved7.valueof(); |
| } |
| if (single_value->field_reserved8.is_bound()) { |
| ret_val.reserved8() = single_value->field_reserved8.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__SP__Reset__Statistics_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__SP__Reset__Statistics_template[list_length]; |
| } |
| |
| N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__SP__Reset__Statistics_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__SP__Reset__Statistics_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__SP__Reset__Statistics_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__SP__Reset__Statistics_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_portPair; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved3() |
| { |
| set_specific(); |
| return single_value->field_reserved3; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved3() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved3; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved4() |
| { |
| set_specific(); |
| return single_value->field_reserved4; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved4() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved4; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved5() |
| { |
| set_specific(); |
| return single_value->field_reserved5; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved5() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved5; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved6() |
| { |
| set_specific(); |
| return single_value->field_reserved6; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved6() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved6; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved7() |
| { |
| set_specific(); |
| return single_value->field_reserved7; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved7() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved7; |
| } |
| |
| OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved8() |
| { |
| set_specific(); |
| return single_value->field_reserved8; |
| } |
| |
| const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved8() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| return single_value->field_reserved8; |
| } |
| |
| int N__SP__Reset__Statistics_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 8; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics 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 @IsobusNMMessageTypes.N_SP_Reset_Statistics containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| } |
| return 0; |
| } |
| |
| void N__SP__Reset__Statistics_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log(); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log(); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log(); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log(); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log(); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__SP__Reset__Statistics_template::log_match(const N__SP__Reset__Statistics& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved3"); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved4"); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved5"); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved6"); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved7"); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".reserved8"); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", reserved3 := "); |
| single_value->field_reserved3.log_match(match_value.reserved3(), legacy); |
| TTCN_Logger::log_event_str(", reserved4 := "); |
| single_value->field_reserved4.log_match(match_value.reserved4(), legacy); |
| TTCN_Logger::log_event_str(", reserved5 := "); |
| single_value->field_reserved5.log_match(match_value.reserved5(), legacy); |
| TTCN_Logger::log_event_str(", reserved6 := "); |
| single_value->field_reserved6.log_match(match_value.reserved6(), legacy); |
| TTCN_Logger::log_event_str(", reserved7 := "); |
| single_value->field_reserved7.log_match(match_value.reserved7(), legacy); |
| TTCN_Logger::log_event_str(", reserved8 := "); |
| single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__SP__Reset__Statistics_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_reserved3.encode_text(text_buf); |
| single_value->field_reserved4.encode_text(text_buf); |
| single_value->field_reserved5.encode_text(text_buf); |
| single_value->field_reserved6.encode_text(text_buf); |
| single_value->field_reserved7.encode_text(text_buf); |
| single_value->field_reserved8.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 @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| } |
| } |
| |
| void N__SP__Reset__Statistics_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_reserved3.decode_text(text_buf); |
| single_value->field_reserved4.decode_text(text_buf); |
| single_value->field_reserved5.decode_text(text_buf); |
| single_value->field_reserved6.decode_text(text_buf); |
| single_value->field_reserved7.decode_text(text_buf); |
| single_value->field_reserved8.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 N__SP__Reset__Statistics_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 @IsobusNMMessageTypes.N_SP_Reset_Statistics."); |
| } |
| } |
| |
| void N__SP__Reset__Statistics_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: { |
| N__SP__Reset__Statistics_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (8<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics has 8 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3)); |
| if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4)); |
| if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5)); |
| if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6)); |
| if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved3")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved3().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved4")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved4().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved5")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved5().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved6")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved6().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved7")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved7().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "reserved8")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| reserved8().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_SP_Reset_Statistics: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__SP__Reset__Statistics_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| 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 : "@IsobusNMMessageTypes.N_SP_Reset_Statistics"); |
| } |
| |
| boolean N__SP__Reset__Statistics_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__SP__Reset__Statistics_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__OC__Request::N__OC__Request() |
| { |
| } |
| |
| N__OC__Request::N__OC__Request(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const NAME& par_nameOfCF) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_nameOfCF(par_nameOfCF) |
| { |
| } |
| |
| N__OC__Request::N__OC__Request(const N__OC__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_OC_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF(); |
| else field_nameOfCF.clean_up(); |
| } |
| |
| void N__OC__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_nameOfCF.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__OC__Request::get_descriptor() const { return &N__OC__Request_descr_; } |
| N__OC__Request& N__OC__Request::operator=(const N__OC__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_OC_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF(); |
| else field_nameOfCF.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__OC__Request::operator==(const N__OC__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_nameOfCF==other_value.field_nameOfCF; |
| } |
| |
| boolean N__OC__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_nameOfCF.is_bound()); |
| } |
| boolean N__OC__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_nameOfCF.is_value(); |
| } |
| void N__OC__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| field_nameOfCF.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__OC__Request::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_OC_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameOfCF")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameOfCF().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_OC_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_OC_Request"); |
| } |
| } |
| |
| void N__OC__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (nameOfCF().is_bound()) nameOfCF().set_implicit_omit(); |
| } |
| |
| void N__OC__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_nameOfCF.encode_text(text_buf); |
| } |
| |
| void N__OC__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_nameOfCF.decode_text(text_buf); |
| } |
| |
| void N__OC__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__OC__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__OC__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_nameOfCF.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__OC__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_nameOfCF.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__OC__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| NAME_template field_nameOfCF; |
| }; |
| |
| void N__OC__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_nameOfCF = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__OC__Request_template::copy_value(const N__OC__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.nameOfCF().is_bound()) { |
| single_value->field_nameOfCF = other_value.nameOfCF(); |
| } else { |
| single_value->field_nameOfCF.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__OC__Request_template::copy_template(const N__OC__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.nameOfCF().get_selection()) { |
| single_value->field_nameOfCF = other_value.nameOfCF(); |
| } else { |
| single_value->field_nameOfCF.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__OC__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__OC__Request_template::N__OC__Request_template() |
| { |
| } |
| |
| N__OC__Request_template::N__OC__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__OC__Request_template::N__OC__Request_template(const N__OC__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__OC__Request_template::N__OC__Request_template(const OPTIONAL<N__OC__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__OC__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_OC_Request from an unbound optional field."); |
| } |
| } |
| |
| N__OC__Request_template::N__OC__Request_template(const N__OC__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__OC__Request_template::~N__OC__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__OC__Request_template& N__OC__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__OC__Request_template& N__OC__Request_template::operator=(const N__OC__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__OC__Request_template& N__OC__Request_template::operator=(const OPTIONAL<N__OC__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__OC__Request&)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 @IsobusNMMessageTypes.N_OC_Request."); |
| } |
| return *this; |
| } |
| |
| N__OC__Request_template& N__OC__Request_template::operator=(const N__OC__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__OC__Request_template::match(const N__OC__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.nameOfCF().is_bound()) return FALSE; |
| if(!single_value->field_nameOfCF.match(other_value.nameOfCF(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__OC__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_nameOfCF.is_bound() |
| ; |
| } |
| |
| boolean N__OC__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_nameOfCF.is_value(); |
| } |
| |
| void N__OC__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__OC__Request N__OC__Request_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 @IsobusNMMessageTypes.N_OC_Request."); |
| N__OC__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_nameOfCF.is_bound()) { |
| ret_val.nameOfCF() = single_value->field_nameOfCF.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__OC__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_OC_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__OC__Request_template[list_length]; |
| } |
| |
| N__OC__Request_template& N__OC__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_OC_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_OC_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__OC__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__OC__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__OC__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__OC__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request."); |
| return single_value->field_portPair; |
| } |
| |
| NAME_template& N__OC__Request_template::nameOfCF() |
| { |
| set_specific(); |
| return single_value->field_nameOfCF; |
| } |
| |
| const NAME_template& N__OC__Request_template::nameOfCF() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field nameOfCF of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request."); |
| return single_value->field_nameOfCF; |
| } |
| |
| int N__OC__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request 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 @IsobusNMMessageTypes.N_OC_Request 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 @IsobusNMMessageTypes.N_OC_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request."); |
| } |
| return 0; |
| } |
| |
| void N__OC__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| single_value->field_nameOfCF.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__OC__Request_template::log_match(const N__OC__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_nameOfCF.match(match_value.nameOfCF(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".nameOfCF"); |
| single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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 N__OC__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_nameOfCF.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 @IsobusNMMessageTypes.N_OC_Request."); |
| } |
| } |
| |
| void N__OC__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_nameOfCF.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 N__OC__Request_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 @IsobusNMMessageTypes.N_OC_Request."); |
| } |
| } |
| |
| void N__OC__Request_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: { |
| N__OC__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_OC_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameOfCF")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameOfCF().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_OC_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_OC_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__OC__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request"); |
| single_value->field_nameOfCF.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request"); |
| 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 : "@IsobusNMMessageTypes.N_OC_Request"); |
| } |
| |
| boolean N__OC__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__OC__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__CC__Request::N__CC__Request() |
| { |
| } |
| |
| N__CC__Request::N__CC__Request(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const NAME& par_nameOfCF) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_nameOfCF(par_nameOfCF) |
| { |
| } |
| |
| N__CC__Request::N__CC__Request(const N__CC__Request& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_CC_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF(); |
| else field_nameOfCF.clean_up(); |
| } |
| |
| void N__CC__Request::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_nameOfCF.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__CC__Request::get_descriptor() const { return &N__CC__Request_descr_; } |
| N__CC__Request& N__CC__Request::operator=(const N__CC__Request& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_CC_Request."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF(); |
| else field_nameOfCF.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__CC__Request::operator==(const N__CC__Request& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_nameOfCF==other_value.field_nameOfCF; |
| } |
| |
| boolean N__CC__Request::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_nameOfCF.is_bound()); |
| } |
| boolean N__CC__Request::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_nameOfCF.is_value(); |
| } |
| void N__CC__Request::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| field_nameOfCF.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__CC__Request::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 (3<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_CC_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameOfCF")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameOfCF().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_CC_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_CC_Request"); |
| } |
| } |
| |
| void N__CC__Request::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (nameOfCF().is_bound()) nameOfCF().set_implicit_omit(); |
| } |
| |
| void N__CC__Request::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_nameOfCF.encode_text(text_buf); |
| } |
| |
| void N__CC__Request::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_nameOfCF.decode_text(text_buf); |
| } |
| |
| void N__CC__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__CC__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__CC__Request::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, NAME_descr_.raw->forceomit); |
| decoded_field_length = field_nameOfCF.RAW_decode(NAME_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__CC__Request::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 3; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(3); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_nameOfCF.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__CC__Request_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| NAME_template field_nameOfCF; |
| }; |
| |
| void N__CC__Request_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_nameOfCF = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__CC__Request_template::copy_value(const N__CC__Request& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.nameOfCF().is_bound()) { |
| single_value->field_nameOfCF = other_value.nameOfCF(); |
| } else { |
| single_value->field_nameOfCF.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__CC__Request_template::copy_template(const N__CC__Request_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.nameOfCF().get_selection()) { |
| single_value->field_nameOfCF = other_value.nameOfCF(); |
| } else { |
| single_value->field_nameOfCF.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__CC__Request_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__CC__Request_template::N__CC__Request_template() |
| { |
| } |
| |
| N__CC__Request_template::N__CC__Request_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__CC__Request_template::N__CC__Request_template(const N__CC__Request& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__CC__Request_template::N__CC__Request_template(const OPTIONAL<N__CC__Request>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__CC__Request&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_CC_Request from an unbound optional field."); |
| } |
| } |
| |
| N__CC__Request_template::N__CC__Request_template(const N__CC__Request_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__CC__Request_template::~N__CC__Request_template() |
| { |
| clean_up(); |
| } |
| |
| N__CC__Request_template& N__CC__Request_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__CC__Request_template& N__CC__Request_template::operator=(const N__CC__Request& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__CC__Request_template& N__CC__Request_template::operator=(const OPTIONAL<N__CC__Request>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__CC__Request&)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 @IsobusNMMessageTypes.N_CC_Request."); |
| } |
| return *this; |
| } |
| |
| N__CC__Request_template& N__CC__Request_template::operator=(const N__CC__Request_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__CC__Request_template::match(const N__CC__Request& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.nameOfCF().is_bound()) return FALSE; |
| if(!single_value->field_nameOfCF.match(other_value.nameOfCF(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__CC__Request_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_nameOfCF.is_bound() |
| ; |
| } |
| |
| boolean N__CC__Request_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_nameOfCF.is_value(); |
| } |
| |
| void N__CC__Request_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__CC__Request N__CC__Request_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 @IsobusNMMessageTypes.N_CC_Request."); |
| N__CC__Request ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_nameOfCF.is_bound()) { |
| ret_val.nameOfCF() = single_value->field_nameOfCF.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__CC__Request_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_CC_Request."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__CC__Request_template[list_length]; |
| } |
| |
| N__CC__Request_template& N__CC__Request_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_CC_Request."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_CC_Request."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__CC__Request_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__CC__Request_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__CC__Request_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__CC__Request_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request."); |
| return single_value->field_portPair; |
| } |
| |
| NAME_template& N__CC__Request_template::nameOfCF() |
| { |
| set_specific(); |
| return single_value->field_nameOfCF; |
| } |
| |
| const NAME_template& N__CC__Request_template::nameOfCF() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field nameOfCF of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request."); |
| return single_value->field_nameOfCF; |
| } |
| |
| int N__CC__Request_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request 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 @IsobusNMMessageTypes.N_CC_Request 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 @IsobusNMMessageTypes.N_CC_Request containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request."); |
| } |
| return 0; |
| } |
| |
| void N__CC__Request_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| single_value->field_nameOfCF.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__CC__Request_template::log_match(const N__CC__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_nameOfCF.match(match_value.nameOfCF(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".nameOfCF"); |
| single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", nameOfCF := "); |
| single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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 N__CC__Request_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_nameOfCF.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 @IsobusNMMessageTypes.N_CC_Request."); |
| } |
| } |
| |
| void N__CC__Request_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_nameOfCF.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 N__CC__Request_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 @IsobusNMMessageTypes.N_CC_Request."); |
| } |
| } |
| |
| void N__CC__Request_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: { |
| N__CC__Request_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (3<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_CC_Request has 3 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().set_param(*param.get_elem(2)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "nameOfCF")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| nameOfCF().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_CC_Request: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_CC_Request"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__CC__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request"); |
| single_value->field_nameOfCF.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request"); |
| 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 : "@IsobusNMMessageTypes.N_CC_Request"); |
| } |
| |
| boolean N__CC__Request_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__CC__Request_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| e__Status::e__Status() |
| { |
| enum_value = UNBOUND_VALUE; |
| } |
| |
| e__Status::e__Status(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_Status with invalid numeric value %d.", other_value); |
| enum_value = (enum_type)other_value; |
| } |
| |
| e__Status::e__Status(enum_type other_value) |
| { |
| enum_value = other_value; |
| } |
| |
| e__Status::e__Status(const e__Status& other_value) |
| : Base_Type() |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| enum_value = other_value.enum_value; |
| } |
| |
| e__Status& e__Status::operator=(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_Status.", other_value); |
| enum_value = (enum_type)other_value; |
| return *this; |
| } |
| |
| e__Status& e__Status::operator=(enum_type other_value) |
| { |
| enum_value = other_value; |
| return *this; |
| } |
| |
| e__Status& e__Status::operator=(const e__Status& other_value) |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| enum_value = other_value.enum_value; |
| return *this; |
| } |
| |
| boolean e__Status::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 @IsobusNMMessageTypes.e_Status."); |
| return enum_value == other_value; |
| } |
| |
| boolean e__Status::operator==(const e__Status& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| return enum_value == other_value.enum_value; |
| } |
| |
| boolean e__Status::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 @IsobusNMMessageTypes.e_Status."); |
| return enum_value < other_value; |
| } |
| |
| boolean e__Status::operator<(const e__Status& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| return enum_value < other_value.enum_value; |
| } |
| |
| boolean e__Status::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 @IsobusNMMessageTypes.e_Status."); |
| return enum_value > other_value; |
| } |
| |
| boolean e__Status::operator>(const e__Status& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| return enum_value > other_value.enum_value; |
| } |
| |
| const char *e__Status::enum_to_str(enum_type enum_par) |
| { |
| switch (enum_par) { |
| case failure: return "failure"; |
| case success: return "success"; |
| default: return "<unknown>"; |
| } |
| } |
| |
| e__Status::enum_type e__Status::str_to_enum(const char *str_par) |
| { |
| if (!strcmp(str_par, "failure")) return failure; |
| else if (!strcmp(str_par, "success")) return success; |
| else return UNKNOWN_VALUE; |
| } |
| |
| boolean e__Status::is_valid_enum(int int_par) |
| { |
| switch (int_par) { |
| case 0: |
| case 1: |
| return TRUE; |
| default: |
| return FALSE; |
| } |
| } |
| |
| int e__Status::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 @IsobusNMMessageTypes.e_Status.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par; |
| } |
| |
| int e__Status::enum2int(const e__Status& 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 @IsobusNMMessageTypes.e_Status.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par.enum_value; |
| } |
| |
| void e__Status::int2enum(int int_val) |
| { |
| if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_Status.", int_val); |
| enum_value = (enum_type)int_val; |
| } |
| |
| e__Status::operator e__Status::enum_type() const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_Status."); |
| return enum_value; |
| } |
| |
| void e__Status::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 e__Status::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", "@IsobusNMMessageTypes.e_Status"); |
| enum_value = str_to_enum(param.get_enumerated()); |
| if (!is_valid_enum(enum_value)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_Status."); |
| } |
| } |
| |
| void e__Status::encode_text(Text_Buf& text_buf) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| text_buf.push_int(enum_value); |
| } |
| |
| void e__Status::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 @IsobusNMMessageTypes.e_Status.", enum_value); |
| } |
| |
| void e__Status::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void e__Status::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int e__Status::RAW_decode(const TTCN_Typedescriptor_t& p_td,TTCN_Buffer& p_buf,int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit*) |
| { |
| int decoded_value = 0; |
| int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err); |
| if (decoded_length < 0) return decoded_length; |
| if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; |
| else { |
| if(no_err){ |
| return -1; |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); |
| enum_value = UNKNOWN_VALUE; |
| } |
| } |
| return decoded_length; |
| } |
| |
| int e__Status::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const |
| { |
| return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2); |
| } |
| |
| void e__Status_template::copy_template(const e__Status_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: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new e__Status_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_Status."); |
| } |
| } |
| |
| e__Status_template::e__Status_template() |
| { |
| } |
| |
| e__Status_template::e__Status_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| e__Status_template::e__Status_template(int other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (!e__Status::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_Status with unknown numeric value %d.", other_value); |
| single_value = (e__Status::enum_type)other_value; |
| } |
| |
| e__Status_template::e__Status_template(e__Status::enum_type other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| single_value = other_value; |
| } |
| |
| e__Status_template::e__Status_template(const e__Status& other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_Status."); |
| single_value = other_value.enum_value; |
| } |
| |
| e__Status_template::e__Status_template(const OPTIONAL<e__Status>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__Status::enum_type)(const e__Status&)other_value; |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_Status from an unbound optional field."); |
| } |
| } |
| |
| e__Status_template::e__Status_template(const e__Status_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| e__Status_template::~e__Status_template() |
| { |
| clean_up(); |
| } |
| |
| boolean e__Status_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| return TRUE; |
| } |
| |
| boolean e__Status_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value != e__Status::UNBOUND_VALUE; |
| } |
| |
| void e__Status_template::clean_up() |
| { |
| if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| e__Status_template& e__Status_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| e__Status_template& e__Status_template::operator=(int other_value) |
| { |
| if (!e__Status::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_Status.", other_value); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__Status::enum_type)other_value; |
| return *this; |
| } |
| |
| e__Status_template& e__Status_template::operator=(e__Status::enum_type other_value) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value; |
| return *this; |
| } |
| |
| e__Status_template& e__Status_template::operator=(const e__Status& other_value) |
| { |
| if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_Status to a template."); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value.enum_value; |
| return *this; |
| } |
| |
| e__Status_template& e__Status_template::operator=(const OPTIONAL<e__Status>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__Status::enum_type)(const e__Status&)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 @IsobusNMMessageTypes.e_Status."); |
| } |
| return *this; |
| } |
| |
| e__Status_template& e__Status_template::operator=(const e__Status_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean e__Status_template::match(e__Status::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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_Status."); |
| } |
| return FALSE; |
| } |
| |
| boolean e__Status_template::match(const e__Status& other_value, boolean) const |
| { |
| if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_Status with an unbound value."); |
| return match(other_value.enum_value); |
| } |
| |
| e__Status::enum_type e__Status_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 @IsobusNMMessageTypes.e_Status."); |
| return single_value; |
| } |
| |
| void e__Status_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_Status."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new e__Status_template[list_length]; |
| } |
| |
| e__Status_template& e__Status_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_Status."); |
| if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_Status."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void e__Status_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_enum(e__Status::enum_to_str(single_value), single_value); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void e__Status_template::log_match(const e__Status& 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 e__Status_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 @IsobusNMMessageTypes.e_Status."); |
| } |
| } |
| |
| void e__Status_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = (e__Status::enum_type)text_buf.pull_int().get_val(); |
| if (!e__Status::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_Status.", 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 e__Status_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 @IsobusNMMessageTypes.e_Status."); |
| } |
| } |
| |
| boolean e__Status_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean e__Status_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void e__Status_template::set_param(Module_Param& param) |
| { |
| param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: { |
| e__Status_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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: { |
| e__Status::enum_type enum_val = e__Status::str_to_enum(m_p->get_enumerated()); |
| if (!e__Status::is_valid_enum(enum_val)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_Status."); |
| } |
| *this = enum_val; |
| } break; |
| default: |
| param.type_error("enumerated template", "@IsobusNMMessageTypes.e_Status"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void e__Status_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 : "@IsobusNMMessageTypes.e_Status"); |
| } |
| |
| e__FailureReasonCode::e__FailureReasonCode() |
| { |
| enum_value = UNBOUND_VALUE; |
| } |
| |
| e__FailureReasonCode::e__FailureReasonCode(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with invalid numeric value %d.", other_value); |
| enum_value = (enum_type)other_value; |
| } |
| |
| e__FailureReasonCode::e__FailureReasonCode(enum_type other_value) |
| { |
| enum_value = other_value; |
| } |
| |
| e__FailureReasonCode::e__FailureReasonCode(const e__FailureReasonCode& other_value) |
| : Base_Type() |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| enum_value = other_value.enum_value; |
| } |
| |
| e__FailureReasonCode& e__FailureReasonCode::operator=(int other_value) |
| { |
| if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", other_value); |
| enum_value = (enum_type)other_value; |
| return *this; |
| } |
| |
| e__FailureReasonCode& e__FailureReasonCode::operator=(enum_type other_value) |
| { |
| enum_value = other_value; |
| return *this; |
| } |
| |
| e__FailureReasonCode& e__FailureReasonCode::operator=(const e__FailureReasonCode& other_value) |
| { |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| enum_value = other_value.enum_value; |
| return *this; |
| } |
| |
| boolean e__FailureReasonCode::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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value == other_value; |
| } |
| |
| boolean e__FailureReasonCode::operator==(const e__FailureReasonCode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value == other_value.enum_value; |
| } |
| |
| boolean e__FailureReasonCode::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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value < other_value; |
| } |
| |
| boolean e__FailureReasonCode::operator<(const e__FailureReasonCode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value < other_value.enum_value; |
| } |
| |
| boolean e__FailureReasonCode::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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value > other_value; |
| } |
| |
| boolean e__FailureReasonCode::operator>(const e__FailureReasonCode& other_value) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value > other_value.enum_value; |
| } |
| |
| const char *e__FailureReasonCode::enum_to_str(enum_type enum_par) |
| { |
| switch (enum_par) { |
| case cannotFindCFwithNAME: return "cannotFindCFwithNAME"; |
| case numberOfConnectionsToNAMEexceeded: return "numberOfConnectionsToNAMEexceeded"; |
| case numberOfConnectionsToNIUexceeded: return "numberOfConnectionsToNIUexceeded"; |
| case busy: return "busy"; |
| case requestTypeNotSupported: return "requestTypeNotSupported"; |
| case notAvailable: return "notAvailable"; |
| default: return "<unknown>"; |
| } |
| } |
| |
| e__FailureReasonCode::enum_type e__FailureReasonCode::str_to_enum(const char *str_par) |
| { |
| if (!strcmp(str_par, "cannotFindCFwithNAME")) return cannotFindCFwithNAME; |
| else if (!strcmp(str_par, "numberOfConnectionsToNAMEexceeded")) return numberOfConnectionsToNAMEexceeded; |
| else if (!strcmp(str_par, "numberOfConnectionsToNIUexceeded")) return numberOfConnectionsToNIUexceeded; |
| else if (!strcmp(str_par, "busy")) return busy; |
| else if (!strcmp(str_par, "requestTypeNotSupported")) return requestTypeNotSupported; |
| else if (!strcmp(str_par, "notAvailable")) return notAvailable; |
| else return UNKNOWN_VALUE; |
| } |
| |
| boolean e__FailureReasonCode::is_valid_enum(int int_par) |
| { |
| switch (int_par) { |
| case 0: |
| case 1: |
| case 2: |
| case 3: |
| case 4: |
| case 255: |
| return TRUE; |
| default: |
| return FALSE; |
| } |
| } |
| |
| int e__FailureReasonCode::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 @IsobusNMMessageTypes.e_FailureReasonCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par; |
| } |
| |
| int e__FailureReasonCode::enum2int(const e__FailureReasonCode& 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 @IsobusNMMessageTypes.e_FailureReasonCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid"); |
| return enum_par.enum_value; |
| } |
| |
| void e__FailureReasonCode::int2enum(int int_val) |
| { |
| if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", int_val); |
| enum_value = (enum_type)int_val; |
| } |
| |
| e__FailureReasonCode::operator e__FailureReasonCode::enum_type() const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return enum_value; |
| } |
| |
| void e__FailureReasonCode::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 e__FailureReasonCode::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", "@IsobusNMMessageTypes.e_FailureReasonCode"); |
| enum_value = str_to_enum(param.get_enumerated()); |
| if (!is_valid_enum(enum_value)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| } |
| |
| void e__FailureReasonCode::encode_text(Text_Buf& text_buf) const |
| { |
| if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| text_buf.push_int(enum_value); |
| } |
| |
| void e__FailureReasonCode::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 @IsobusNMMessageTypes.e_FailureReasonCode.", enum_value); |
| } |
| |
| void e__FailureReasonCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void e__FailureReasonCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int e__FailureReasonCode::RAW_decode(const TTCN_Typedescriptor_t& p_td,TTCN_Buffer& p_buf,int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit*) |
| { |
| int decoded_value = 0; |
| int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err); |
| if (decoded_length < 0) return decoded_length; |
| if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value; |
| else { |
| if(no_err){ |
| return -1; |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name); |
| enum_value = UNKNOWN_VALUE; |
| } |
| } |
| return decoded_length; |
| } |
| |
| int e__FailureReasonCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const |
| { |
| return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8); |
| } |
| |
| void e__FailureReasonCode_template::copy_template(const e__FailureReasonCode_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: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new e__FailureReasonCode_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template() |
| { |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(int other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (!e__FailureReasonCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with unknown numeric value %d.", other_value); |
| single_value = (e__FailureReasonCode::enum_type)other_value; |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(e__FailureReasonCode::enum_type other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| single_value = other_value; |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(const e__FailureReasonCode& other_value) |
| : Base_Template(SPECIFIC_VALUE) |
| { |
| if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| single_value = other_value.enum_value; |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(const OPTIONAL<e__FailureReasonCode>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FailureReasonCode::enum_type)(const e__FailureReasonCode&)other_value; |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode from an unbound optional field."); |
| } |
| } |
| |
| e__FailureReasonCode_template::e__FailureReasonCode_template(const e__FailureReasonCode_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| e__FailureReasonCode_template::~e__FailureReasonCode_template() |
| { |
| clean_up(); |
| } |
| |
| boolean e__FailureReasonCode_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| return TRUE; |
| } |
| |
| boolean e__FailureReasonCode_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value != e__FailureReasonCode::UNBOUND_VALUE; |
| } |
| |
| void e__FailureReasonCode_template::clean_up() |
| { |
| if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value; |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(int other_value) |
| { |
| if (!e__FailureReasonCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", other_value); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FailureReasonCode::enum_type)other_value; |
| return *this; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(e__FailureReasonCode::enum_type other_value) |
| { |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value; |
| return *this; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const e__FailureReasonCode& other_value) |
| { |
| if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode to a template."); |
| clean_up(); |
| set_selection(SPECIFIC_VALUE); |
| single_value = other_value.enum_value; |
| return *this; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const OPTIONAL<e__FailureReasonCode>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| set_selection(SPECIFIC_VALUE); |
| single_value = (e__FailureReasonCode::enum_type)(const e__FailureReasonCode&)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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| return *this; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const e__FailureReasonCode_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean e__FailureReasonCode_template::match(e__FailureReasonCode::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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| return FALSE; |
| } |
| |
| boolean e__FailureReasonCode_template::match(const e__FailureReasonCode& other_value, boolean) const |
| { |
| if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with an unbound value."); |
| return match(other_value.enum_value); |
| } |
| |
| e__FailureReasonCode::enum_type e__FailureReasonCode_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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return single_value; |
| } |
| |
| void e__FailureReasonCode_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new e__FailureReasonCode_template[list_length]; |
| } |
| |
| e__FailureReasonCode_template& e__FailureReasonCode_template::list_item(unsigned int list_index) |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| return value_list.list_value[list_index]; |
| } |
| |
| void e__FailureReasonCode_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_enum(e__FailureReasonCode::enum_to_str(single_value), single_value); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void e__FailureReasonCode_template::log_match(const e__FailureReasonCode& 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 e__FailureReasonCode_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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| } |
| |
| void e__FailureReasonCode_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = (e__FailureReasonCode::enum_type)text_buf.pull_int().get_val(); |
| if (!e__FailureReasonCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", 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 e__FailureReasonCode_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 @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| } |
| |
| boolean e__FailureReasonCode_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean e__FailureReasonCode_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int i=0; i<value_list.n_values; i++) |
| if (value_list.list_value[i].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void e__FailureReasonCode_template::set_param(Module_Param& param) |
| { |
| param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: { |
| e__FailureReasonCode_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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: { |
| e__FailureReasonCode::enum_type enum_val = e__FailureReasonCode::str_to_enum(m_p->get_enumerated()); |
| if (!e__FailureReasonCode::is_valid_enum(enum_val)) { |
| param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FailureReasonCode."); |
| } |
| *this = enum_val; |
| } break; |
| default: |
| param.type_error("enumerated template", "@IsobusNMMessageTypes.e_FailureReasonCode"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void e__FailureReasonCode_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 : "@IsobusNMMessageTypes.e_FailureReasonCode"); |
| } |
| |
| N__OC__Response::N__OC__Response() |
| { |
| } |
| |
| N__OC__Response::N__OC__Response(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const e__Status& par_status, |
| const e__FailureReasonCode& par_failureReasonCode) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_status(par_status), |
| field_failureReasonCode(par_failureReasonCode) |
| { |
| } |
| |
| N__OC__Response::N__OC__Response(const N__OC__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_OC_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.status().is_bound()) field_status = other_value.status(); |
| else field_status.clean_up(); |
| if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode(); |
| else field_failureReasonCode.clean_up(); |
| } |
| |
| void N__OC__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_status.clean_up(); |
| field_failureReasonCode.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__OC__Response::get_descriptor() const { return &N__OC__Response_descr_; } |
| N__OC__Response& N__OC__Response::operator=(const N__OC__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_OC_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.status().is_bound()) field_status = other_value.status(); |
| else field_status.clean_up(); |
| if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode(); |
| else field_failureReasonCode.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__OC__Response::operator==(const N__OC__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_status==other_value.field_status |
| && field_failureReasonCode==other_value.field_failureReasonCode; |
| } |
| |
| boolean N__OC__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_status.is_bound()) |
| || (field_failureReasonCode.is_bound()); |
| } |
| boolean N__OC__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_status.is_value() |
| && field_failureReasonCode.is_value(); |
| } |
| void N__OC__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", status := "); |
| field_status.log(); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| field_failureReasonCode.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__OC__Response::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_OC_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "status")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| status().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "failureReasonCode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| failureReasonCode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_OC_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_OC_Response"); |
| } |
| } |
| |
| void N__OC__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (status().is_bound()) status().set_implicit_omit(); |
| if (failureReasonCode().is_bound()) failureReasonCode().set_implicit_omit(); |
| } |
| |
| void N__OC__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_status.encode_text(text_buf); |
| field_failureReasonCode.encode_text(text_buf); |
| } |
| |
| void N__OC__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_status.decode_text(text_buf); |
| field_failureReasonCode.decode_text(text_buf); |
| } |
| |
| void N__OC__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__OC__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__OC__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, e__Status_descr_.raw->forceomit); |
| decoded_field_length = field_status.RAW_decode(e__Status_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, e__FailureReasonCode_descr_.raw->forceomit); |
| decoded_field_length = field_failureReasonCode.RAW_decode(e__FailureReasonCode_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__OC__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__Status_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__FailureReasonCode_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_status.RAW_encode(e__Status_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_failureReasonCode.RAW_encode(e__FailureReasonCode_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__OC__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| e__Status_template field_status; |
| e__FailureReasonCode_template field_failureReasonCode; |
| }; |
| |
| void N__OC__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_status = ANY_VALUE; |
| single_value->field_failureReasonCode = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__OC__Response_template::copy_value(const N__OC__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.status().is_bound()) { |
| single_value->field_status = other_value.status(); |
| } else { |
| single_value->field_status.clean_up(); |
| } |
| if (other_value.failureReasonCode().is_bound()) { |
| single_value->field_failureReasonCode = other_value.failureReasonCode(); |
| } else { |
| single_value->field_failureReasonCode.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__OC__Response_template::copy_template(const N__OC__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.status().get_selection()) { |
| single_value->field_status = other_value.status(); |
| } else { |
| single_value->field_status.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.failureReasonCode().get_selection()) { |
| single_value->field_failureReasonCode = other_value.failureReasonCode(); |
| } else { |
| single_value->field_failureReasonCode.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__OC__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__OC__Response_template::N__OC__Response_template() |
| { |
| } |
| |
| N__OC__Response_template::N__OC__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__OC__Response_template::N__OC__Response_template(const N__OC__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__OC__Response_template::N__OC__Response_template(const OPTIONAL<N__OC__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__OC__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_OC_Response from an unbound optional field."); |
| } |
| } |
| |
| N__OC__Response_template::N__OC__Response_template(const N__OC__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__OC__Response_template::~N__OC__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__OC__Response_template& N__OC__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__OC__Response_template& N__OC__Response_template::operator=(const N__OC__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__OC__Response_template& N__OC__Response_template::operator=(const OPTIONAL<N__OC__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__OC__Response&)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 @IsobusNMMessageTypes.N_OC_Response."); |
| } |
| return *this; |
| } |
| |
| N__OC__Response_template& N__OC__Response_template::operator=(const N__OC__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__OC__Response_template::match(const N__OC__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.status().is_bound()) return FALSE; |
| if(!single_value->field_status.match(other_value.status(), legacy))return FALSE; |
| if(!other_value.failureReasonCode().is_bound()) return FALSE; |
| if(!single_value->field_failureReasonCode.match(other_value.failureReasonCode(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__OC__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_status.is_bound() |
| |
| ||single_value->field_failureReasonCode.is_bound() |
| ; |
| } |
| |
| boolean N__OC__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_status.is_value() |
| &&single_value->field_failureReasonCode.is_value(); |
| } |
| |
| void N__OC__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__OC__Response N__OC__Response_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 @IsobusNMMessageTypes.N_OC_Response."); |
| N__OC__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_status.is_bound()) { |
| ret_val.status() = single_value->field_status.valueof(); |
| } |
| if (single_value->field_failureReasonCode.is_bound()) { |
| ret_val.failureReasonCode() = single_value->field_failureReasonCode.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__OC__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_OC_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__OC__Response_template[list_length]; |
| } |
| |
| N__OC__Response_template& N__OC__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_OC_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_OC_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__OC__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__OC__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__OC__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__OC__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response."); |
| return single_value->field_portPair; |
| } |
| |
| e__Status_template& N__OC__Response_template::status() |
| { |
| set_specific(); |
| return single_value->field_status; |
| } |
| |
| const e__Status_template& N__OC__Response_template::status() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field status of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response."); |
| return single_value->field_status; |
| } |
| |
| e__FailureReasonCode_template& N__OC__Response_template::failureReasonCode() |
| { |
| set_specific(); |
| return single_value->field_failureReasonCode; |
| } |
| |
| const e__FailureReasonCode_template& N__OC__Response_template::failureReasonCode() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field failureReasonCode of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response."); |
| return single_value->field_failureReasonCode; |
| } |
| |
| int N__OC__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response 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 @IsobusNMMessageTypes.N_OC_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response."); |
| } |
| return 0; |
| } |
| |
| void N__OC__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", status := "); |
| single_value->field_status.log(); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| single_value->field_failureReasonCode.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__OC__Response_template::log_match(const N__OC__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_status.match(match_value.status(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".status"); |
| single_value->field_status.log_match(match_value.status(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_failureReasonCode.match(match_value.failureReasonCode(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".failureReasonCode"); |
| single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", status := "); |
| single_value->field_status.log_match(match_value.status(), legacy); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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 N__OC__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_status.encode_text(text_buf); |
| single_value->field_failureReasonCode.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 @IsobusNMMessageTypes.N_OC_Response."); |
| } |
| } |
| |
| void N__OC__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_status.decode_text(text_buf); |
| single_value->field_failureReasonCode.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 N__OC__Response_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 @IsobusNMMessageTypes.N_OC_Response."); |
| } |
| } |
| |
| void N__OC__Response_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: { |
| N__OC__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_OC_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "status")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| status().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "failureReasonCode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| failureReasonCode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_OC_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_OC_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__OC__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response"); |
| single_value->field_status.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response"); |
| single_value->field_failureReasonCode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response"); |
| 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 : "@IsobusNMMessageTypes.N_OC_Response"); |
| } |
| |
| boolean N__OC__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__OC__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| N__CC__Response::N__CC__Response() |
| { |
| } |
| |
| N__CC__Response::N__CC__Response(const INTEGER& par_msgFunction, |
| const PortPair& par_portPair, |
| const e__Status& par_status, |
| const e__FailureReasonCode& par_failureReasonCode) |
| : field_msgFunction(par_msgFunction), |
| field_portPair(par_portPair), |
| field_status(par_status), |
| field_failureReasonCode(par_failureReasonCode) |
| { |
| } |
| |
| N__CC__Response::N__CC__Response(const N__CC__Response& other_value) |
| { |
| if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_CC_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.status().is_bound()) field_status = other_value.status(); |
| else field_status.clean_up(); |
| if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode(); |
| else field_failureReasonCode.clean_up(); |
| } |
| |
| void N__CC__Response::clean_up() |
| { |
| field_msgFunction.clean_up(); |
| field_portPair.clean_up(); |
| field_status.clean_up(); |
| field_failureReasonCode.clean_up(); |
| } |
| |
| const TTCN_Typedescriptor_t* N__CC__Response::get_descriptor() const { return &N__CC__Response_descr_; } |
| N__CC__Response& N__CC__Response::operator=(const N__CC__Response& other_value) |
| { |
| if (this != &other_value) { |
| if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_CC_Response."); |
| if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction(); |
| else field_msgFunction.clean_up(); |
| if (other_value.portPair().is_bound()) field_portPair = other_value.portPair(); |
| else field_portPair.clean_up(); |
| if (other_value.status().is_bound()) field_status = other_value.status(); |
| else field_status.clean_up(); |
| if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode(); |
| else field_failureReasonCode.clean_up(); |
| } |
| return *this; |
| } |
| |
| boolean N__CC__Response::operator==(const N__CC__Response& other_value) const |
| { |
| return field_msgFunction==other_value.field_msgFunction |
| && field_portPair==other_value.field_portPair |
| && field_status==other_value.field_status |
| && field_failureReasonCode==other_value.field_failureReasonCode; |
| } |
| |
| boolean N__CC__Response::is_bound() const |
| { |
| return (field_msgFunction.is_bound()) |
| || (field_portPair.is_bound()) |
| || (field_status.is_bound()) |
| || (field_failureReasonCode.is_bound()); |
| } |
| boolean N__CC__Response::is_value() const |
| { |
| return field_msgFunction.is_value() |
| && field_portPair.is_value() |
| && field_status.is_value() |
| && field_failureReasonCode.is_value(); |
| } |
| void N__CC__Response::log() const |
| { |
| if (!is_bound()) { |
| TTCN_Logger::log_event_unbound(); |
| return; |
| } |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| field_portPair.log(); |
| TTCN_Logger::log_event_str(", status := "); |
| field_status.log(); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| field_failureReasonCode.log(); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| |
| void N__CC__Response::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 (4<param.get_size()) { |
| param.error("record value of type @IsobusNMMessageTypes.N_CC_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "status")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| status().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "failureReasonCode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| failureReasonCode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_CC_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record value", "@IsobusNMMessageTypes.N_CC_Response"); |
| } |
| } |
| |
| void N__CC__Response::set_implicit_omit() |
| { |
| if (msgFunction().is_bound()) msgFunction().set_implicit_omit(); |
| if (portPair().is_bound()) portPair().set_implicit_omit(); |
| if (status().is_bound()) status().set_implicit_omit(); |
| if (failureReasonCode().is_bound()) failureReasonCode().set_implicit_omit(); |
| } |
| |
| void N__CC__Response::encode_text(Text_Buf& text_buf) const |
| { |
| field_msgFunction.encode_text(text_buf); |
| field_portPair.encode_text(text_buf); |
| field_status.encode_text(text_buf); |
| field_failureReasonCode.encode_text(text_buf); |
| } |
| |
| void N__CC__Response::decode_text(Text_Buf& text_buf) |
| { |
| field_msgFunction.decode_text(text_buf); |
| field_portPair.decode_text(text_buf); |
| field_status.decode_text(text_buf); |
| field_failureReasonCode.decode_text(text_buf); |
| } |
| |
| void N__CC__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void N__CC__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int N__CC__Response::RAW_decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, raw_order_t top_bit_ord, boolean no_err, int, boolean, const RAW_Force_Omit* force_omit) |
| { (void)no_err; |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| size_t last_decoded_pos = p_buf.get_pos_bit(); |
| int decoded_length = 0; |
| int decoded_field_length = 0; |
| raw_order_t local_top_order; |
| if(p_td.raw->top_bit_order==TOP_BIT_INHERITED)local_top_order=top_bit_ord; |
| else if(p_td.raw->top_bit_order==TOP_BIT_RIGHT)local_top_order=ORDER_MSB; |
| else local_top_order=ORDER_LSB; |
| RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit); |
| decoded_field_length = field_msgFunction.RAW_decode(Function_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_0_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_1_force_omit(1, force_omit, PortPair_descr_.raw->forceomit); |
| decoded_field_length = field_portPair.RAW_decode(PortPair_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_1_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_2_force_omit(2, force_omit, e__Status_descr_.raw->forceomit); |
| decoded_field_length = field_status.RAW_decode(e__Status_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_2_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| RAW_Force_Omit field_3_force_omit(3, force_omit, e__FailureReasonCode_descr_.raw->forceomit); |
| decoded_field_length = field_failureReasonCode.RAW_decode(e__FailureReasonCode_descr_, p_buf, limit, local_top_order, no_err, -1, TRUE, &field_3_force_omit); |
| if (decoded_field_length < 0) return decoded_field_length; |
| decoded_length+=decoded_field_length; |
| limit-=decoded_field_length; |
| last_decoded_pos=bigger(last_decoded_pos, p_buf.get_pos_bit()); |
| p_buf.set_pos_bit(last_decoded_pos); |
| return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding); |
| } |
| |
| int N__CC__Response::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const { |
| if (!is_bound()) TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 4; |
| myleaf.body.node.nodes = init_nodes_of_enc_tree(4); |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw); |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw); |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__Status_descr_.raw); |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__FailureReasonCode_descr_.raw); |
| encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]); |
| encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]); |
| encoded_length += field_status.RAW_encode(e__Status_descr_, *myleaf.body.node.nodes[2]); |
| encoded_length += field_failureReasonCode.RAW_encode(e__FailureReasonCode_descr_, *myleaf.body.node.nodes[3]); |
| return myleaf.length = encoded_length; |
| } |
| |
| struct N__CC__Response_template::single_value_struct { |
| INTEGER_template field_msgFunction; |
| PortPair_template field_portPair; |
| e__Status_template field_status; |
| e__FailureReasonCode_template field_failureReasonCode; |
| }; |
| |
| void N__CC__Response_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_msgFunction = ANY_VALUE; |
| single_value->field_portPair = ANY_VALUE; |
| single_value->field_status = ANY_VALUE; |
| single_value->field_failureReasonCode = ANY_VALUE; |
| } |
| } |
| } |
| |
| void N__CC__Response_template::copy_value(const N__CC__Response& other_value) |
| { |
| single_value = new single_value_struct; |
| if (other_value.msgFunction().is_bound()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (other_value.portPair().is_bound()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (other_value.status().is_bound()) { |
| single_value->field_status = other_value.status(); |
| } else { |
| single_value->field_status.clean_up(); |
| } |
| if (other_value.failureReasonCode().is_bound()) { |
| single_value->field_failureReasonCode = other_value.failureReasonCode(); |
| } else { |
| single_value->field_failureReasonCode.clean_up(); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void N__CC__Response_template::copy_template(const N__CC__Response_template& other_value) |
| { |
| switch (other_value.template_selection) { |
| case SPECIFIC_VALUE: |
| single_value = new single_value_struct; |
| if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) { |
| single_value->field_msgFunction = other_value.msgFunction(); |
| } else { |
| single_value->field_msgFunction.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) { |
| single_value->field_portPair = other_value.portPair(); |
| } else { |
| single_value->field_portPair.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.status().get_selection()) { |
| single_value->field_status = other_value.status(); |
| } else { |
| single_value->field_status.clean_up(); |
| } |
| if (UNINITIALIZED_TEMPLATE != other_value.failureReasonCode().get_selection()) { |
| single_value->field_failureReasonCode = other_value.failureReasonCode(); |
| } else { |
| single_value->field_failureReasonCode.clean_up(); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new N__CC__Response_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; |
| default: |
| TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response."); |
| break; |
| } |
| set_selection(other_value); |
| } |
| |
| N__CC__Response_template::N__CC__Response_template() |
| { |
| } |
| |
| N__CC__Response_template::N__CC__Response_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| N__CC__Response_template::N__CC__Response_template(const N__CC__Response& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| N__CC__Response_template::N__CC__Response_template(const OPTIONAL<N__CC__Response>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__CC__Response&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_CC_Response from an unbound optional field."); |
| } |
| } |
| |
| N__CC__Response_template::N__CC__Response_template(const N__CC__Response_template& other_value) |
| : Base_Template() |
| { |
| copy_template(other_value); |
| } |
| |
| N__CC__Response_template::~N__CC__Response_template() |
| { |
| clean_up(); |
| } |
| |
| N__CC__Response_template& N__CC__Response_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| N__CC__Response_template& N__CC__Response_template::operator=(const N__CC__Response& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| N__CC__Response_template& N__CC__Response_template::operator=(const OPTIONAL<N__CC__Response>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const N__CC__Response&)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 @IsobusNMMessageTypes.N_CC_Response."); |
| } |
| return *this; |
| } |
| |
| N__CC__Response_template& N__CC__Response_template::operator=(const N__CC__Response_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean N__CC__Response_template::match(const N__CC__Response& 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.msgFunction().is_bound()) return FALSE; |
| if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE; |
| if(!other_value.portPair().is_bound()) return FALSE; |
| if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE; |
| if(!other_value.status().is_bound()) return FALSE; |
| if(!single_value->field_status.match(other_value.status(), legacy))return FALSE; |
| if(!other_value.failureReasonCode().is_bound()) return FALSE; |
| if(!single_value->field_failureReasonCode.match(other_value.failureReasonCode(), 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; |
| default: |
| TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response."); |
| } |
| return FALSE; |
| } |
| |
| boolean N__CC__Response_template::is_bound() const |
| { |
| if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE; |
| if (template_selection != SPECIFIC_VALUE) return TRUE; |
| return single_value->field_msgFunction.is_bound() |
| |
| ||single_value->field_portPair.is_bound() |
| |
| ||single_value->field_status.is_bound() |
| |
| ||single_value->field_failureReasonCode.is_bound() |
| ; |
| } |
| |
| boolean N__CC__Response_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| return single_value->field_msgFunction.is_value() |
| &&single_value->field_portPair.is_value() |
| &&single_value->field_status.is_value() |
| &&single_value->field_failureReasonCode.is_value(); |
| } |
| |
| void N__CC__Response_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| delete single_value; |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| N__CC__Response N__CC__Response_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 @IsobusNMMessageTypes.N_CC_Response."); |
| N__CC__Response ret_val; |
| if (single_value->field_msgFunction.is_bound()) { |
| ret_val.msgFunction() = single_value->field_msgFunction.valueof(); |
| } |
| if (single_value->field_portPair.is_bound()) { |
| ret_val.portPair() = single_value->field_portPair.valueof(); |
| } |
| if (single_value->field_status.is_bound()) { |
| ret_val.status() = single_value->field_status.valueof(); |
| } |
| if (single_value->field_failureReasonCode.is_bound()) { |
| ret_val.failureReasonCode() = single_value->field_failureReasonCode.valueof(); |
| } |
| return ret_val; |
| } |
| |
| void N__CC__Response_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) |
| TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_CC_Response."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new N__CC__Response_template[list_length]; |
| } |
| |
| N__CC__Response_template& N__CC__Response_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) |
| TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_CC_Response."); |
| if (list_index >= value_list.n_values) |
| TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_CC_Response."); |
| return value_list.list_value[list_index]; |
| } |
| |
| INTEGER_template& N__CC__Response_template::msgFunction() |
| { |
| set_specific(); |
| return single_value->field_msgFunction; |
| } |
| |
| const INTEGER_template& N__CC__Response_template::msgFunction() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response."); |
| return single_value->field_msgFunction; |
| } |
| |
| PortPair_template& N__CC__Response_template::portPair() |
| { |
| set_specific(); |
| return single_value->field_portPair; |
| } |
| |
| const PortPair_template& N__CC__Response_template::portPair() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response."); |
| return single_value->field_portPair; |
| } |
| |
| e__Status_template& N__CC__Response_template::status() |
| { |
| set_specific(); |
| return single_value->field_status; |
| } |
| |
| const e__Status_template& N__CC__Response_template::status() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field status of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response."); |
| return single_value->field_status; |
| } |
| |
| e__FailureReasonCode_template& N__CC__Response_template::failureReasonCode() |
| { |
| set_specific(); |
| return single_value->field_failureReasonCode; |
| } |
| |
| const e__FailureReasonCode_template& N__CC__Response_template::failureReasonCode() const |
| { |
| if (template_selection != SPECIFIC_VALUE) |
| TTCN_error("Accessing field failureReasonCode of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response."); |
| return single_value->field_failureReasonCode; |
| } |
| |
| int N__CC__Response_template::size_of() const |
| { |
| if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response which has an ifpresent attribute."); |
| switch (template_selection) |
| { |
| case SPECIFIC_VALUE: |
| return 4; |
| case VALUE_LIST: |
| { |
| if (value_list.n_values<1) |
| TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response 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 @IsobusNMMessageTypes.N_CC_Response containing a value list with different sizes."); |
| } |
| return item_size; |
| } |
| case OMIT_VALUE: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing omit value."); |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing */? value."); |
| case COMPLEMENTED_LIST: |
| TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing complemented list."); |
| default: |
| TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response."); |
| } |
| return 0; |
| } |
| |
| void N__CC__Response_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| TTCN_Logger::log_event_str("{ msgFunction := "); |
| single_value->field_msgFunction.log(); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log(); |
| TTCN_Logger::log_event_str(", status := "); |
| single_value->field_status.log(); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| single_value->field_failureReasonCode.log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void N__CC__Response_template::log_match(const N__CC__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".msgFunction"); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_portPair.match(match_value.portPair(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".portPair"); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_status.match(match_value.status(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".status"); |
| single_value->field_status.log_match(match_value.status(), legacy); |
| TTCN_Logger::set_logmatch_buffer_len(previous_size); |
| } |
| if(!single_value->field_failureReasonCode.match(match_value.failureReasonCode(), legacy)){ |
| TTCN_Logger::log_logmatch_info(".failureReasonCode"); |
| single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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("{ msgFunction := "); |
| single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy); |
| TTCN_Logger::log_event_str(", portPair := "); |
| single_value->field_portPair.log_match(match_value.portPair(), legacy); |
| TTCN_Logger::log_event_str(", status := "); |
| single_value->field_status.log_match(match_value.status(), legacy); |
| TTCN_Logger::log_event_str(", failureReasonCode := "); |
| single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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 N__CC__Response_template::encode_text(Text_Buf& text_buf) const |
| { |
| encode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| single_value->field_msgFunction.encode_text(text_buf); |
| single_value->field_portPair.encode_text(text_buf); |
| single_value->field_status.encode_text(text_buf); |
| single_value->field_failureReasonCode.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 @IsobusNMMessageTypes.N_CC_Response."); |
| } |
| } |
| |
| void N__CC__Response_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_msgFunction.decode_text(text_buf); |
| single_value->field_portPair.decode_text(text_buf); |
| single_value->field_status.decode_text(text_buf); |
| single_value->field_failureReasonCode.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 N__CC__Response_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 @IsobusNMMessageTypes.N_CC_Response."); |
| } |
| } |
| |
| void N__CC__Response_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: { |
| N__CC__Response_template new_temp; |
| new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, param.get_size()); |
| for (size_t p_i=0; p_i<param.get_size(); p_i++) { |
| new_temp.list_item(p_i).set_param(*param.get_elem(p_i)); |
| } |
| *this = new_temp; |
| break; } |
| case Module_Param::MP_Value_List: |
| if (4<param.get_size()) { |
| param.error("record template of type @IsobusNMMessageTypes.N_CC_Response has 4 fields but list value has %d fields", (int)param.get_size()); |
| } |
| if (param.get_size()>0 && param.get_elem(0)->get_type()!=Module_Param::MP_NotUsed) msgFunction().set_param(*param.get_elem(0)); |
| if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1)); |
| if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2)); |
| if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().set_param(*param.get_elem(3)); |
| break; |
| case Module_Param::MP_Assignment_List: { |
| Vector<bool> value_used(param.get_size()); |
| value_used.resize(param.get_size(), FALSE); |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "msgFunction")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| msgFunction().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "portPair")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| portPair().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "status")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| status().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| if (!strcmp(curr_param->get_id()->get_name(), "failureReasonCode")) { |
| if (curr_param->get_type()!=Module_Param::MP_NotUsed) { |
| failureReasonCode().set_param(*curr_param); |
| } |
| value_used[val_idx]=TRUE; |
| } |
| } |
| for (size_t val_idx=0; val_idx<param.get_size(); val_idx++) if (!value_used[val_idx]) { |
| Module_Param* const curr_param = param.get_elem(val_idx); |
| curr_param->error("Non existent field name in type @IsobusNMMessageTypes.N_CC_Response: %s", curr_param->get_id()->get_name()); |
| break; |
| } |
| } break; |
| default: |
| param.type_error("record template", "@IsobusNMMessageTypes.N_CC_Response"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void N__CC__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response"); |
| single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response"); |
| single_value->field_status.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response"); |
| single_value->field_failureReasonCode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response"); |
| 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 : "@IsobusNMMessageTypes.N_CC_Response"); |
| } |
| |
| boolean N__CC__Response_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean N__CC__Response_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int l_idx=0; l_idx<value_list.n_values; l_idx++) |
| if (value_list.list_value[l_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void NetworkMessage::copy_value(const NetworkMessage& other_value) |
| { |
| switch (other_value.union_selection) { |
| case ALT_n__MFDB__Request: |
| field_n__MFDB__Request = new N__MFDB__Request(*other_value.field_n__MFDB__Request); |
| break; |
| case ALT_n__MFDB__Response: |
| field_n__MFDB__Response = new N__MFDB__Response(*other_value.field_n__MFDB__Response); |
| break; |
| case ALT_n__MFDB__Add: |
| field_n__MFDB__Add = new N__MFDB__Add(*other_value.field_n__MFDB__Add); |
| break; |
| case ALT_n__MFDB__Delete: |
| field_n__MFDB__Delete = new N__MFDB__Delete(*other_value.field_n__MFDB__Delete); |
| break; |
| case ALT_n__MFDB__Clear: |
| field_n__MFDB__Clear = new N__MFDB__Clear(*other_value.field_n__MFDB__Clear); |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry(*other_value.field_n__MFDB__Create__Entry); |
| break; |
| case ALT_n__MFDBNQ__Add: |
| field_n__MFDBNQ__Add = new N__MFDBNQ__Add(*other_value.field_n__MFDBNQ__Add); |
| break; |
| case ALT_n__NT__Request: |
| field_n__NT__Request = new N__NT__Request(*other_value.field_n__NT__Request); |
| break; |
| case ALT_n__NT__Response: |
| field_n__NT__Response = new N__NT__Response(*other_value.field_n__NT__Response); |
| break; |
| case ALT_n__NTX__Request: |
| field_n__NTX__Request = new N__NTX__Request(*other_value.field_n__NTX__Request); |
| break; |
| case ALT_n__NTX__Response: |
| field_n__NTX__Response = new N__NTX__Response(*other_value.field_n__NTX__Response); |
| break; |
| case ALT_n__GP__Request: |
| field_n__GP__Request = new N__GP__Request(*other_value.field_n__GP__Request); |
| break; |
| case ALT_n__GP__Response: |
| field_n__GP__Response = new N__GP__Response(*other_value.field_n__GP__Response); |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics(*other_value.field_n__GP__Reset__Statistics); |
| break; |
| case ALT_n__SP__Request: |
| field_n__SP__Request = new N__SP__Request(*other_value.field_n__SP__Request); |
| break; |
| case ALT_n__SP__Response: |
| field_n__SP__Response = new N__SP__Response(*other_value.field_n__SP__Response); |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics(*other_value.field_n__SP__Reset__Statistics); |
| break; |
| case ALT_n__OC__Request: |
| field_n__OC__Request = new N__OC__Request(*other_value.field_n__OC__Request); |
| break; |
| case ALT_n__OC__Response: |
| field_n__OC__Response = new N__OC__Response(*other_value.field_n__OC__Response); |
| break; |
| case ALT_n__CC__Request: |
| field_n__CC__Request = new N__CC__Request(*other_value.field_n__CC__Request); |
| break; |
| case ALT_n__CC__Response: |
| field_n__CC__Response = new N__CC__Response(*other_value.field_n__CC__Response); |
| break; |
| default: |
| TTCN_error("Assignment of an unbound union value of type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| union_selection = other_value.union_selection; |
| } |
| |
| NetworkMessage::NetworkMessage() |
| { |
| union_selection = UNBOUND_VALUE; |
| } |
| |
| NetworkMessage::NetworkMessage(const NetworkMessage& other_value) |
| : Base_Type(){ |
| copy_value(other_value); |
| } |
| |
| NetworkMessage::~NetworkMessage() |
| { |
| clean_up(); |
| } |
| |
| NetworkMessage& NetworkMessage::operator=(const NetworkMessage& other_value) |
| { |
| if (this != &other_value) { |
| clean_up(); |
| copy_value(other_value); |
| } |
| return *this; |
| } |
| |
| boolean NetworkMessage::operator==(const NetworkMessage& other_value) const |
| { |
| if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (union_selection != other_value.union_selection) return FALSE; |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| return *field_n__MFDB__Request == *other_value.field_n__MFDB__Request; |
| case ALT_n__MFDB__Response: |
| return *field_n__MFDB__Response == *other_value.field_n__MFDB__Response; |
| case ALT_n__MFDB__Add: |
| return *field_n__MFDB__Add == *other_value.field_n__MFDB__Add; |
| case ALT_n__MFDB__Delete: |
| return *field_n__MFDB__Delete == *other_value.field_n__MFDB__Delete; |
| case ALT_n__MFDB__Clear: |
| return *field_n__MFDB__Clear == *other_value.field_n__MFDB__Clear; |
| case ALT_n__MFDB__Create__Entry: |
| return *field_n__MFDB__Create__Entry == *other_value.field_n__MFDB__Create__Entry; |
| case ALT_n__MFDBNQ__Add: |
| return *field_n__MFDBNQ__Add == *other_value.field_n__MFDBNQ__Add; |
| case ALT_n__NT__Request: |
| return *field_n__NT__Request == *other_value.field_n__NT__Request; |
| case ALT_n__NT__Response: |
| return *field_n__NT__Response == *other_value.field_n__NT__Response; |
| case ALT_n__NTX__Request: |
| return *field_n__NTX__Request == *other_value.field_n__NTX__Request; |
| case ALT_n__NTX__Response: |
| return *field_n__NTX__Response == *other_value.field_n__NTX__Response; |
| case ALT_n__GP__Request: |
| return *field_n__GP__Request == *other_value.field_n__GP__Request; |
| case ALT_n__GP__Response: |
| return *field_n__GP__Response == *other_value.field_n__GP__Response; |
| case ALT_n__GP__Reset__Statistics: |
| return *field_n__GP__Reset__Statistics == *other_value.field_n__GP__Reset__Statistics; |
| case ALT_n__SP__Request: |
| return *field_n__SP__Request == *other_value.field_n__SP__Request; |
| case ALT_n__SP__Response: |
| return *field_n__SP__Response == *other_value.field_n__SP__Response; |
| case ALT_n__SP__Reset__Statistics: |
| return *field_n__SP__Reset__Statistics == *other_value.field_n__SP__Reset__Statistics; |
| case ALT_n__OC__Request: |
| return *field_n__OC__Request == *other_value.field_n__OC__Request; |
| case ALT_n__OC__Response: |
| return *field_n__OC__Response == *other_value.field_n__OC__Response; |
| case ALT_n__CC__Request: |
| return *field_n__CC__Request == *other_value.field_n__CC__Request; |
| case ALT_n__CC__Response: |
| return *field_n__CC__Response == *other_value.field_n__CC__Response; |
| default: |
| return FALSE; |
| } |
| } |
| |
| N__MFDB__Request& NetworkMessage::n__MFDB__Request() |
| { |
| if (union_selection != ALT_n__MFDB__Request) { |
| clean_up(); |
| field_n__MFDB__Request = new N__MFDB__Request; |
| union_selection = ALT_n__MFDB__Request; |
| } |
| return *field_n__MFDB__Request; |
| } |
| |
| const N__MFDB__Request& NetworkMessage::n__MFDB__Request() const |
| { |
| if (union_selection != ALT_n__MFDB__Request) TTCN_error("Using non-selected field n_MFDB_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Request; |
| } |
| |
| N__MFDB__Response& NetworkMessage::n__MFDB__Response() |
| { |
| if (union_selection != ALT_n__MFDB__Response) { |
| clean_up(); |
| field_n__MFDB__Response = new N__MFDB__Response; |
| union_selection = ALT_n__MFDB__Response; |
| } |
| return *field_n__MFDB__Response; |
| } |
| |
| const N__MFDB__Response& NetworkMessage::n__MFDB__Response() const |
| { |
| if (union_selection != ALT_n__MFDB__Response) TTCN_error("Using non-selected field n_MFDB_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Response; |
| } |
| |
| N__MFDB__Add& NetworkMessage::n__MFDB__Add() |
| { |
| if (union_selection != ALT_n__MFDB__Add) { |
| clean_up(); |
| field_n__MFDB__Add = new N__MFDB__Add; |
| union_selection = ALT_n__MFDB__Add; |
| } |
| return *field_n__MFDB__Add; |
| } |
| |
| const N__MFDB__Add& NetworkMessage::n__MFDB__Add() const |
| { |
| if (union_selection != ALT_n__MFDB__Add) TTCN_error("Using non-selected field n_MFDB_Add in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Add; |
| } |
| |
| N__MFDB__Delete& NetworkMessage::n__MFDB__Delete() |
| { |
| if (union_selection != ALT_n__MFDB__Delete) { |
| clean_up(); |
| field_n__MFDB__Delete = new N__MFDB__Delete; |
| union_selection = ALT_n__MFDB__Delete; |
| } |
| return *field_n__MFDB__Delete; |
| } |
| |
| const N__MFDB__Delete& NetworkMessage::n__MFDB__Delete() const |
| { |
| if (union_selection != ALT_n__MFDB__Delete) TTCN_error("Using non-selected field n_MFDB_Delete in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Delete; |
| } |
| |
| N__MFDB__Clear& NetworkMessage::n__MFDB__Clear() |
| { |
| if (union_selection != ALT_n__MFDB__Clear) { |
| clean_up(); |
| field_n__MFDB__Clear = new N__MFDB__Clear; |
| union_selection = ALT_n__MFDB__Clear; |
| } |
| return *field_n__MFDB__Clear; |
| } |
| |
| const N__MFDB__Clear& NetworkMessage::n__MFDB__Clear() const |
| { |
| if (union_selection != ALT_n__MFDB__Clear) TTCN_error("Using non-selected field n_MFDB_Clear in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Clear; |
| } |
| |
| N__MFDB__Create__Entry& NetworkMessage::n__MFDB__Create__Entry() |
| { |
| if (union_selection != ALT_n__MFDB__Create__Entry) { |
| clean_up(); |
| field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry; |
| union_selection = ALT_n__MFDB__Create__Entry; |
| } |
| return *field_n__MFDB__Create__Entry; |
| } |
| |
| const N__MFDB__Create__Entry& NetworkMessage::n__MFDB__Create__Entry() const |
| { |
| if (union_selection != ALT_n__MFDB__Create__Entry) TTCN_error("Using non-selected field n_MFDB_Create_Entry in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDB__Create__Entry; |
| } |
| |
| N__MFDBNQ__Add& NetworkMessage::n__MFDBNQ__Add() |
| { |
| if (union_selection != ALT_n__MFDBNQ__Add) { |
| clean_up(); |
| field_n__MFDBNQ__Add = new N__MFDBNQ__Add; |
| union_selection = ALT_n__MFDBNQ__Add; |
| } |
| return *field_n__MFDBNQ__Add; |
| } |
| |
| const N__MFDBNQ__Add& NetworkMessage::n__MFDBNQ__Add() const |
| { |
| if (union_selection != ALT_n__MFDBNQ__Add) TTCN_error("Using non-selected field n_MFDBNQ_Add in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__MFDBNQ__Add; |
| } |
| |
| N__NT__Request& NetworkMessage::n__NT__Request() |
| { |
| if (union_selection != ALT_n__NT__Request) { |
| clean_up(); |
| field_n__NT__Request = new N__NT__Request; |
| union_selection = ALT_n__NT__Request; |
| } |
| return *field_n__NT__Request; |
| } |
| |
| const N__NT__Request& NetworkMessage::n__NT__Request() const |
| { |
| if (union_selection != ALT_n__NT__Request) TTCN_error("Using non-selected field n_NT_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__NT__Request; |
| } |
| |
| N__NT__Response& NetworkMessage::n__NT__Response() |
| { |
| if (union_selection != ALT_n__NT__Response) { |
| clean_up(); |
| field_n__NT__Response = new N__NT__Response; |
| union_selection = ALT_n__NT__Response; |
| } |
| return *field_n__NT__Response; |
| } |
| |
| const N__NT__Response& NetworkMessage::n__NT__Response() const |
| { |
| if (union_selection != ALT_n__NT__Response) TTCN_error("Using non-selected field n_NT_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__NT__Response; |
| } |
| |
| N__NTX__Request& NetworkMessage::n__NTX__Request() |
| { |
| if (union_selection != ALT_n__NTX__Request) { |
| clean_up(); |
| field_n__NTX__Request = new N__NTX__Request; |
| union_selection = ALT_n__NTX__Request; |
| } |
| return *field_n__NTX__Request; |
| } |
| |
| const N__NTX__Request& NetworkMessage::n__NTX__Request() const |
| { |
| if (union_selection != ALT_n__NTX__Request) TTCN_error("Using non-selected field n_NTX_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__NTX__Request; |
| } |
| |
| N__NTX__Response& NetworkMessage::n__NTX__Response() |
| { |
| if (union_selection != ALT_n__NTX__Response) { |
| clean_up(); |
| field_n__NTX__Response = new N__NTX__Response; |
| union_selection = ALT_n__NTX__Response; |
| } |
| return *field_n__NTX__Response; |
| } |
| |
| const N__NTX__Response& NetworkMessage::n__NTX__Response() const |
| { |
| if (union_selection != ALT_n__NTX__Response) TTCN_error("Using non-selected field n_NTX_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__NTX__Response; |
| } |
| |
| N__GP__Request& NetworkMessage::n__GP__Request() |
| { |
| if (union_selection != ALT_n__GP__Request) { |
| clean_up(); |
| field_n__GP__Request = new N__GP__Request; |
| union_selection = ALT_n__GP__Request; |
| } |
| return *field_n__GP__Request; |
| } |
| |
| const N__GP__Request& NetworkMessage::n__GP__Request() const |
| { |
| if (union_selection != ALT_n__GP__Request) TTCN_error("Using non-selected field n_GP_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__GP__Request; |
| } |
| |
| N__GP__Response& NetworkMessage::n__GP__Response() |
| { |
| if (union_selection != ALT_n__GP__Response) { |
| clean_up(); |
| field_n__GP__Response = new N__GP__Response; |
| union_selection = ALT_n__GP__Response; |
| } |
| return *field_n__GP__Response; |
| } |
| |
| const N__GP__Response& NetworkMessage::n__GP__Response() const |
| { |
| if (union_selection != ALT_n__GP__Response) TTCN_error("Using non-selected field n_GP_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__GP__Response; |
| } |
| |
| N__GP__Reset__Statistics& NetworkMessage::n__GP__Reset__Statistics() |
| { |
| if (union_selection != ALT_n__GP__Reset__Statistics) { |
| clean_up(); |
| field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics; |
| union_selection = ALT_n__GP__Reset__Statistics; |
| } |
| return *field_n__GP__Reset__Statistics; |
| } |
| |
| const N__GP__Reset__Statistics& NetworkMessage::n__GP__Reset__Statistics() const |
| { |
| if (union_selection != ALT_n__GP__Reset__Statistics) TTCN_error("Using non-selected field n_GP_Reset_Statistics in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__GP__Reset__Statistics; |
| } |
| |
| N__SP__Request& NetworkMessage::n__SP__Request() |
| { |
| if (union_selection != ALT_n__SP__Request) { |
| clean_up(); |
| field_n__SP__Request = new N__SP__Request; |
| union_selection = ALT_n__SP__Request; |
| } |
| return *field_n__SP__Request; |
| } |
| |
| const N__SP__Request& NetworkMessage::n__SP__Request() const |
| { |
| if (union_selection != ALT_n__SP__Request) TTCN_error("Using non-selected field n_SP_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__SP__Request; |
| } |
| |
| N__SP__Response& NetworkMessage::n__SP__Response() |
| { |
| if (union_selection != ALT_n__SP__Response) { |
| clean_up(); |
| field_n__SP__Response = new N__SP__Response; |
| union_selection = ALT_n__SP__Response; |
| } |
| return *field_n__SP__Response; |
| } |
| |
| const N__SP__Response& NetworkMessage::n__SP__Response() const |
| { |
| if (union_selection != ALT_n__SP__Response) TTCN_error("Using non-selected field n_SP_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__SP__Response; |
| } |
| |
| N__SP__Reset__Statistics& NetworkMessage::n__SP__Reset__Statistics() |
| { |
| if (union_selection != ALT_n__SP__Reset__Statistics) { |
| clean_up(); |
| field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics; |
| union_selection = ALT_n__SP__Reset__Statistics; |
| } |
| return *field_n__SP__Reset__Statistics; |
| } |
| |
| const N__SP__Reset__Statistics& NetworkMessage::n__SP__Reset__Statistics() const |
| { |
| if (union_selection != ALT_n__SP__Reset__Statistics) TTCN_error("Using non-selected field n_SP_Reset_Statistics in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__SP__Reset__Statistics; |
| } |
| |
| N__OC__Request& NetworkMessage::n__OC__Request() |
| { |
| if (union_selection != ALT_n__OC__Request) { |
| clean_up(); |
| field_n__OC__Request = new N__OC__Request; |
| union_selection = ALT_n__OC__Request; |
| } |
| return *field_n__OC__Request; |
| } |
| |
| const N__OC__Request& NetworkMessage::n__OC__Request() const |
| { |
| if (union_selection != ALT_n__OC__Request) TTCN_error("Using non-selected field n_OC_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__OC__Request; |
| } |
| |
| N__OC__Response& NetworkMessage::n__OC__Response() |
| { |
| if (union_selection != ALT_n__OC__Response) { |
| clean_up(); |
| field_n__OC__Response = new N__OC__Response; |
| union_selection = ALT_n__OC__Response; |
| } |
| return *field_n__OC__Response; |
| } |
| |
| const N__OC__Response& NetworkMessage::n__OC__Response() const |
| { |
| if (union_selection != ALT_n__OC__Response) TTCN_error("Using non-selected field n_OC_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__OC__Response; |
| } |
| |
| N__CC__Request& NetworkMessage::n__CC__Request() |
| { |
| if (union_selection != ALT_n__CC__Request) { |
| clean_up(); |
| field_n__CC__Request = new N__CC__Request; |
| union_selection = ALT_n__CC__Request; |
| } |
| return *field_n__CC__Request; |
| } |
| |
| const N__CC__Request& NetworkMessage::n__CC__Request() const |
| { |
| if (union_selection != ALT_n__CC__Request) TTCN_error("Using non-selected field n_CC_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__CC__Request; |
| } |
| |
| N__CC__Response& NetworkMessage::n__CC__Response() |
| { |
| if (union_selection != ALT_n__CC__Response) { |
| clean_up(); |
| field_n__CC__Response = new N__CC__Response; |
| union_selection = ALT_n__CC__Response; |
| } |
| return *field_n__CC__Response; |
| } |
| |
| const N__CC__Response& NetworkMessage::n__CC__Response() const |
| { |
| if (union_selection != ALT_n__CC__Response) TTCN_error("Using non-selected field n_CC_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *field_n__CC__Response; |
| } |
| |
| boolean NetworkMessage::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 @IsobusNMMessageTypes.NetworkMessage."); |
| return union_selection == checked_selection; |
| } |
| |
| boolean NetworkMessage::is_bound() const |
| { |
| return union_selection != UNBOUND_VALUE; |
| } |
| |
| boolean NetworkMessage::is_value() const |
| { |
| switch (union_selection) { |
| case UNBOUND_VALUE: return FALSE; |
| case ALT_n__MFDB__Request: return field_n__MFDB__Request->is_value(); |
| case ALT_n__MFDB__Response: return field_n__MFDB__Response->is_value(); |
| case ALT_n__MFDB__Add: return field_n__MFDB__Add->is_value(); |
| case ALT_n__MFDB__Delete: return field_n__MFDB__Delete->is_value(); |
| case ALT_n__MFDB__Clear: return field_n__MFDB__Clear->is_value(); |
| case ALT_n__MFDB__Create__Entry: return field_n__MFDB__Create__Entry->is_value(); |
| case ALT_n__MFDBNQ__Add: return field_n__MFDBNQ__Add->is_value(); |
| case ALT_n__NT__Request: return field_n__NT__Request->is_value(); |
| case ALT_n__NT__Response: return field_n__NT__Response->is_value(); |
| case ALT_n__NTX__Request: return field_n__NTX__Request->is_value(); |
| case ALT_n__NTX__Response: return field_n__NTX__Response->is_value(); |
| case ALT_n__GP__Request: return field_n__GP__Request->is_value(); |
| case ALT_n__GP__Response: return field_n__GP__Response->is_value(); |
| case ALT_n__GP__Reset__Statistics: return field_n__GP__Reset__Statistics->is_value(); |
| case ALT_n__SP__Request: return field_n__SP__Request->is_value(); |
| case ALT_n__SP__Response: return field_n__SP__Response->is_value(); |
| case ALT_n__SP__Reset__Statistics: return field_n__SP__Reset__Statistics->is_value(); |
| case ALT_n__OC__Request: return field_n__OC__Request->is_value(); |
| case ALT_n__OC__Response: return field_n__OC__Response->is_value(); |
| case ALT_n__CC__Request: return field_n__CC__Request->is_value(); |
| case ALT_n__CC__Response: return field_n__CC__Response->is_value(); |
| default: TTCN_error("Invalid selection in union is_bound");} |
| } |
| |
| void NetworkMessage::clean_up() |
| { |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| delete field_n__MFDB__Request; |
| break; |
| case ALT_n__MFDB__Response: |
| delete field_n__MFDB__Response; |
| break; |
| case ALT_n__MFDB__Add: |
| delete field_n__MFDB__Add; |
| break; |
| case ALT_n__MFDB__Delete: |
| delete field_n__MFDB__Delete; |
| break; |
| case ALT_n__MFDB__Clear: |
| delete field_n__MFDB__Clear; |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| delete field_n__MFDB__Create__Entry; |
| break; |
| case ALT_n__MFDBNQ__Add: |
| delete field_n__MFDBNQ__Add; |
| break; |
| case ALT_n__NT__Request: |
| delete field_n__NT__Request; |
| break; |
| case ALT_n__NT__Response: |
| delete field_n__NT__Response; |
| break; |
| case ALT_n__NTX__Request: |
| delete field_n__NTX__Request; |
| break; |
| case ALT_n__NTX__Response: |
| delete field_n__NTX__Response; |
| break; |
| case ALT_n__GP__Request: |
| delete field_n__GP__Request; |
| break; |
| case ALT_n__GP__Response: |
| delete field_n__GP__Response; |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| delete field_n__GP__Reset__Statistics; |
| break; |
| case ALT_n__SP__Request: |
| delete field_n__SP__Request; |
| break; |
| case ALT_n__SP__Response: |
| delete field_n__SP__Response; |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| delete field_n__SP__Reset__Statistics; |
| break; |
| case ALT_n__OC__Request: |
| delete field_n__OC__Request; |
| break; |
| case ALT_n__OC__Response: |
| delete field_n__OC__Response; |
| break; |
| case ALT_n__CC__Request: |
| delete field_n__CC__Request; |
| break; |
| case ALT_n__CC__Response: |
| delete field_n__CC__Response; |
| break; |
| default: |
| break; |
| } |
| union_selection = UNBOUND_VALUE; |
| } |
| |
| void NetworkMessage::log() const |
| { |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| TTCN_Logger::log_event_str("{ n_MFDB_Request := "); |
| field_n__MFDB__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDB__Response: |
| TTCN_Logger::log_event_str("{ n_MFDB_Response := "); |
| field_n__MFDB__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDB__Add: |
| TTCN_Logger::log_event_str("{ n_MFDB_Add := "); |
| field_n__MFDB__Add->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDB__Delete: |
| TTCN_Logger::log_event_str("{ n_MFDB_Delete := "); |
| field_n__MFDB__Delete->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDB__Clear: |
| TTCN_Logger::log_event_str("{ n_MFDB_Clear := "); |
| field_n__MFDB__Clear->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := "); |
| field_n__MFDB__Create__Entry->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__MFDBNQ__Add: |
| TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := "); |
| field_n__MFDBNQ__Add->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__NT__Request: |
| TTCN_Logger::log_event_str("{ n_NT_Request := "); |
| field_n__NT__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__NT__Response: |
| TTCN_Logger::log_event_str("{ n_NT_Response := "); |
| field_n__NT__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__NTX__Request: |
| TTCN_Logger::log_event_str("{ n_NTX_Request := "); |
| field_n__NTX__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__NTX__Response: |
| TTCN_Logger::log_event_str("{ n_NTX_Response := "); |
| field_n__NTX__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__GP__Request: |
| TTCN_Logger::log_event_str("{ n_GP_Request := "); |
| field_n__GP__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__GP__Response: |
| TTCN_Logger::log_event_str("{ n_GP_Response := "); |
| field_n__GP__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := "); |
| field_n__GP__Reset__Statistics->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__SP__Request: |
| TTCN_Logger::log_event_str("{ n_SP_Request := "); |
| field_n__SP__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__SP__Response: |
| TTCN_Logger::log_event_str("{ n_SP_Response := "); |
| field_n__SP__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := "); |
| field_n__SP__Reset__Statistics->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__OC__Request: |
| TTCN_Logger::log_event_str("{ n_OC_Request := "); |
| field_n__OC__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__OC__Response: |
| TTCN_Logger::log_event_str("{ n_OC_Response := "); |
| field_n__OC__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__CC__Request: |
| TTCN_Logger::log_event_str("{ n_CC_Request := "); |
| field_n__CC__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case ALT_n__CC__Response: |
| TTCN_Logger::log_event_str("{ n_CC_Response := "); |
| field_n__CC__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| default: |
| TTCN_Logger::log_event_unbound(); |
| } |
| } |
| |
| void NetworkMessage::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, "n_MFDB_Request")) { |
| n__MFDB__Request().set_param(*mp_last); |
| if (!n__MFDB__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDB_Response")) { |
| n__MFDB__Response().set_param(*mp_last); |
| if (!n__MFDB__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDB_Add")) { |
| n__MFDB__Add().set_param(*mp_last); |
| if (!n__MFDB__Add().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDB_Delete")) { |
| n__MFDB__Delete().set_param(*mp_last); |
| if (!n__MFDB__Delete().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDB_Clear")) { |
| n__MFDB__Clear().set_param(*mp_last); |
| if (!n__MFDB__Clear().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDB_Create_Entry")) { |
| n__MFDB__Create__Entry().set_param(*mp_last); |
| if (!n__MFDB__Create__Entry().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_MFDBNQ_Add")) { |
| n__MFDBNQ__Add().set_param(*mp_last); |
| if (!n__MFDBNQ__Add().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_NT_Request")) { |
| n__NT__Request().set_param(*mp_last); |
| if (!n__NT__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_NT_Response")) { |
| n__NT__Response().set_param(*mp_last); |
| if (!n__NT__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_NTX_Request")) { |
| n__NTX__Request().set_param(*mp_last); |
| if (!n__NTX__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_NTX_Response")) { |
| n__NTX__Response().set_param(*mp_last); |
| if (!n__NTX__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_GP_Request")) { |
| n__GP__Request().set_param(*mp_last); |
| if (!n__GP__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_GP_Response")) { |
| n__GP__Response().set_param(*mp_last); |
| if (!n__GP__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_GP_Reset_Statistics")) { |
| n__GP__Reset__Statistics().set_param(*mp_last); |
| if (!n__GP__Reset__Statistics().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_SP_Request")) { |
| n__SP__Request().set_param(*mp_last); |
| if (!n__SP__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_SP_Response")) { |
| n__SP__Response().set_param(*mp_last); |
| if (!n__SP__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_SP_Reset_Statistics")) { |
| n__SP__Reset__Statistics().set_param(*mp_last); |
| if (!n__SP__Reset__Statistics().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_OC_Request")) { |
| n__OC__Request().set_param(*mp_last); |
| if (!n__OC__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_OC_Response")) { |
| n__OC__Response().set_param(*mp_last); |
| if (!n__OC__Response().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_CC_Request")) { |
| n__CC__Request().set_param(*mp_last); |
| if (!n__CC__Request().is_bound()) clean_up(); |
| return; |
| } |
| if (!strcmp(last_name, "n_CC_Response")) { |
| n__CC__Response().set_param(*mp_last); |
| if (!n__CC__Response().is_bound()) clean_up(); |
| return; |
| } |
| mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.NetworkMessage.", last_name); |
| } |
| |
| void NetworkMessage::set_implicit_omit() |
| { |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| field_n__MFDB__Request->set_implicit_omit(); break; |
| case ALT_n__MFDB__Response: |
| field_n__MFDB__Response->set_implicit_omit(); break; |
| case ALT_n__MFDB__Add: |
| field_n__MFDB__Add->set_implicit_omit(); break; |
| case ALT_n__MFDB__Delete: |
| field_n__MFDB__Delete->set_implicit_omit(); break; |
| case ALT_n__MFDB__Clear: |
| field_n__MFDB__Clear->set_implicit_omit(); break; |
| case ALT_n__MFDB__Create__Entry: |
| field_n__MFDB__Create__Entry->set_implicit_omit(); break; |
| case ALT_n__MFDBNQ__Add: |
| field_n__MFDBNQ__Add->set_implicit_omit(); break; |
| case ALT_n__NT__Request: |
| field_n__NT__Request->set_implicit_omit(); break; |
| case ALT_n__NT__Response: |
| field_n__NT__Response->set_implicit_omit(); break; |
| case ALT_n__NTX__Request: |
| field_n__NTX__Request->set_implicit_omit(); break; |
| case ALT_n__NTX__Response: |
| field_n__NTX__Response->set_implicit_omit(); break; |
| case ALT_n__GP__Request: |
| field_n__GP__Request->set_implicit_omit(); break; |
| case ALT_n__GP__Response: |
| field_n__GP__Response->set_implicit_omit(); break; |
| case ALT_n__GP__Reset__Statistics: |
| field_n__GP__Reset__Statistics->set_implicit_omit(); break; |
| case ALT_n__SP__Request: |
| field_n__SP__Request->set_implicit_omit(); break; |
| case ALT_n__SP__Response: |
| field_n__SP__Response->set_implicit_omit(); break; |
| case ALT_n__SP__Reset__Statistics: |
| field_n__SP__Reset__Statistics->set_implicit_omit(); break; |
| case ALT_n__OC__Request: |
| field_n__OC__Request->set_implicit_omit(); break; |
| case ALT_n__OC__Response: |
| field_n__OC__Response->set_implicit_omit(); break; |
| case ALT_n__CC__Request: |
| field_n__CC__Request->set_implicit_omit(); break; |
| case ALT_n__CC__Response: |
| field_n__CC__Response->set_implicit_omit(); break; |
| default: break; |
| } |
| } |
| |
| void NetworkMessage::encode_text(Text_Buf& text_buf) const |
| { |
| text_buf.push_int(union_selection); |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| field_n__MFDB__Request->encode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Response: |
| field_n__MFDB__Response->encode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Add: |
| field_n__MFDB__Add->encode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Delete: |
| field_n__MFDB__Delete->encode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Clear: |
| field_n__MFDB__Clear->encode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| field_n__MFDB__Create__Entry->encode_text(text_buf); |
| break; |
| case ALT_n__MFDBNQ__Add: |
| field_n__MFDBNQ__Add->encode_text(text_buf); |
| break; |
| case ALT_n__NT__Request: |
| field_n__NT__Request->encode_text(text_buf); |
| break; |
| case ALT_n__NT__Response: |
| field_n__NT__Response->encode_text(text_buf); |
| break; |
| case ALT_n__NTX__Request: |
| field_n__NTX__Request->encode_text(text_buf); |
| break; |
| case ALT_n__NTX__Response: |
| field_n__NTX__Response->encode_text(text_buf); |
| break; |
| case ALT_n__GP__Request: |
| field_n__GP__Request->encode_text(text_buf); |
| break; |
| case ALT_n__GP__Response: |
| field_n__GP__Response->encode_text(text_buf); |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| field_n__GP__Reset__Statistics->encode_text(text_buf); |
| break; |
| case ALT_n__SP__Request: |
| field_n__SP__Request->encode_text(text_buf); |
| break; |
| case ALT_n__SP__Response: |
| field_n__SP__Response->encode_text(text_buf); |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| field_n__SP__Reset__Statistics->encode_text(text_buf); |
| break; |
| case ALT_n__OC__Request: |
| field_n__OC__Request->encode_text(text_buf); |
| break; |
| case ALT_n__OC__Response: |
| field_n__OC__Response->encode_text(text_buf); |
| break; |
| case ALT_n__CC__Request: |
| field_n__CC__Request->encode_text(text_buf); |
| break; |
| case ALT_n__CC__Response: |
| field_n__CC__Response->encode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| |
| void NetworkMessage::decode_text(Text_Buf& text_buf) |
| { |
| switch ((union_selection_type)text_buf.pull_int().get_val()) { |
| case ALT_n__MFDB__Request: |
| n__MFDB__Request().decode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Response: |
| n__MFDB__Response().decode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Add: |
| n__MFDB__Add().decode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Delete: |
| n__MFDB__Delete().decode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Clear: |
| n__MFDB__Clear().decode_text(text_buf); |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| n__MFDB__Create__Entry().decode_text(text_buf); |
| break; |
| case ALT_n__MFDBNQ__Add: |
| n__MFDBNQ__Add().decode_text(text_buf); |
| break; |
| case ALT_n__NT__Request: |
| n__NT__Request().decode_text(text_buf); |
| break; |
| case ALT_n__NT__Response: |
| n__NT__Response().decode_text(text_buf); |
| break; |
| case ALT_n__NTX__Request: |
| n__NTX__Request().decode_text(text_buf); |
| break; |
| case ALT_n__NTX__Response: |
| n__NTX__Response().decode_text(text_buf); |
| break; |
| case ALT_n__GP__Request: |
| n__GP__Request().decode_text(text_buf); |
| break; |
| case ALT_n__GP__Response: |
| n__GP__Response().decode_text(text_buf); |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| n__GP__Reset__Statistics().decode_text(text_buf); |
| break; |
| case ALT_n__SP__Request: |
| n__SP__Request().decode_text(text_buf); |
| break; |
| case ALT_n__SP__Response: |
| n__SP__Response().decode_text(text_buf); |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| n__SP__Reset__Statistics().decode_text(text_buf); |
| break; |
| case ALT_n__OC__Request: |
| n__OC__Request().decode_text(text_buf); |
| break; |
| case ALT_n__OC__Response: |
| n__OC__Response().decode_text(text_buf); |
| break; |
| case ALT_n__CC__Request: |
| n__CC__Request().decode_text(text_buf); |
| break; |
| case ALT_n__CC__Response: |
| n__CC__Response().decode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| |
| void NetworkMessage::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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); |
| 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;} |
| default: |
| TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| void NetworkMessage::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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(); |
| if(b_data[p_buf.get_len()-1]!='\0'){ |
| 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); |
| 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)<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;} |
| default: |
| TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name); |
| } |
| va_end(pvar); |
| } |
| |
| int NetworkMessage::RAW_decode( |
| const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, int limit, |
| raw_order_t top_bit_ord, boolean no_err, int sel_field, boolean, const RAW_Force_Omit* force_omit) |
| { |
| int prepaddlength=p_buf.increase_pos_padd(p_td.raw->prepadding); |
| limit-=prepaddlength; |
| int decoded_length=0; |
| int starting_pos=p_buf.get_pos_bit(); |
| if(sel_field!=-1){ |
| switch(sel_field){ |
| case 0: { |
| RAW_Force_Omit field_force_omit(0, force_omit, N__MFDB__Request_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Request().RAW_decode(N__MFDB__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 1: { |
| RAW_Force_Omit field_force_omit(1, force_omit, N__MFDB__Response_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Response().RAW_decode(N__MFDB__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 2: { |
| RAW_Force_Omit field_force_omit(2, force_omit, N__MFDB__Add_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Add().RAW_decode(N__MFDB__Add_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 3: { |
| RAW_Force_Omit field_force_omit(3, force_omit, N__MFDB__Delete_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Delete().RAW_decode(N__MFDB__Delete_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 4: { |
| RAW_Force_Omit field_force_omit(4, force_omit, N__MFDB__Clear_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Clear().RAW_decode(N__MFDB__Clear_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 5: { |
| RAW_Force_Omit field_force_omit(5, force_omit, N__MFDB__Create__Entry_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Create__Entry().RAW_decode(N__MFDB__Create__Entry_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 6: { |
| RAW_Force_Omit field_force_omit(6, force_omit, N__MFDBNQ__Add_descr_.raw->forceomit); |
| decoded_length = n__MFDBNQ__Add().RAW_decode(N__MFDBNQ__Add_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 7: { |
| RAW_Force_Omit field_force_omit(7, force_omit, N__NT__Request_descr_.raw->forceomit); |
| decoded_length = n__NT__Request().RAW_decode(N__NT__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 8: { |
| RAW_Force_Omit field_force_omit(8, force_omit, N__NT__Response_descr_.raw->forceomit); |
| decoded_length = n__NT__Response().RAW_decode(N__NT__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 9: { |
| RAW_Force_Omit field_force_omit(9, force_omit, N__NTX__Request_descr_.raw->forceomit); |
| decoded_length = n__NTX__Request().RAW_decode(N__NTX__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 10: { |
| RAW_Force_Omit field_force_omit(10, force_omit, N__NTX__Response_descr_.raw->forceomit); |
| decoded_length = n__NTX__Response().RAW_decode(N__NTX__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 11: { |
| RAW_Force_Omit field_force_omit(11, force_omit, N__GP__Request_descr_.raw->forceomit); |
| decoded_length = n__GP__Request().RAW_decode(N__GP__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 12: { |
| RAW_Force_Omit field_force_omit(12, force_omit, N__GP__Response_descr_.raw->forceomit); |
| decoded_length = n__GP__Response().RAW_decode(N__GP__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 13: { |
| RAW_Force_Omit field_force_omit(13, force_omit, N__GP__Reset__Statistics_descr_.raw->forceomit); |
| decoded_length = n__GP__Reset__Statistics().RAW_decode(N__GP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 14: { |
| RAW_Force_Omit field_force_omit(14, force_omit, N__SP__Request_descr_.raw->forceomit); |
| decoded_length = n__SP__Request().RAW_decode(N__SP__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 15: { |
| RAW_Force_Omit field_force_omit(15, force_omit, N__SP__Response_descr_.raw->forceomit); |
| decoded_length = n__SP__Response().RAW_decode(N__SP__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 16: { |
| RAW_Force_Omit field_force_omit(16, force_omit, N__SP__Reset__Statistics_descr_.raw->forceomit); |
| decoded_length = n__SP__Reset__Statistics().RAW_decode(N__SP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 17: { |
| RAW_Force_Omit field_force_omit(17, force_omit, N__OC__Request_descr_.raw->forceomit); |
| decoded_length = n__OC__Request().RAW_decode(N__OC__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 18: { |
| RAW_Force_Omit field_force_omit(18, force_omit, N__OC__Response_descr_.raw->forceomit); |
| decoded_length = n__OC__Response().RAW_decode(N__OC__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 19: { |
| RAW_Force_Omit field_force_omit(19, force_omit, N__CC__Request_descr_.raw->forceomit); |
| decoded_length = n__CC__Request().RAW_decode(N__CC__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| case 20: { |
| RAW_Force_Omit field_force_omit(20, force_omit, N__CC__Response_descr_.raw->forceomit); |
| decoded_length = n__CC__Response().RAW_decode(N__CC__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit); |
| break; } |
| default: break; |
| } |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| } else { |
| boolean already_failed = FALSE; |
| INTEGER temporal_0; |
| int decoded_0_length; |
| already_failed = FALSE; |
| if (!already_failed) { |
| p_buf.set_pos_bit(starting_pos + 0); |
| decoded_0_length = temporal_0.RAW_decode(Function_descr_, p_buf, limit, top_bit_ord, TRUE); |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 0) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(0, force_omit, N__MFDB__Request_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Request().RAW_decode(N__MFDB__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Request).msgFunction() == 0) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 1) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(1, force_omit, N__MFDB__Response_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Response().RAW_decode(N__MFDB__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Response).msgFunction() == 1) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 2) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(2, force_omit, N__MFDB__Add_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Add().RAW_decode(N__MFDB__Add_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Add).msgFunction() == 2) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 3) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(3, force_omit, N__MFDB__Delete_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Delete().RAW_decode(N__MFDB__Delete_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Delete).msgFunction() == 3) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 4) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(4, force_omit, N__MFDB__Clear_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Clear().RAW_decode(N__MFDB__Clear_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Clear).msgFunction() == 4) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 6) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(5, force_omit, N__MFDB__Create__Entry_descr_.raw->forceomit); |
| decoded_length = n__MFDB__Create__Entry().RAW_decode(N__MFDB__Create__Entry_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDB__Create__Entry).msgFunction() == 6) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 7) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(6, force_omit, N__MFDBNQ__Add_descr_.raw->forceomit); |
| decoded_length = n__MFDBNQ__Add().RAW_decode(N__MFDBNQ__Add_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__MFDBNQ__Add).msgFunction() == 7) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 64) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(7, force_omit, N__NT__Request_descr_.raw->forceomit); |
| decoded_length = n__NT__Request().RAW_decode(N__NT__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__NT__Request).msgFunction() == 64) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 65) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(8, force_omit, N__NT__Response_descr_.raw->forceomit); |
| decoded_length = n__NT__Response().RAW_decode(N__NT__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__NT__Response).msgFunction() == 65) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 66) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(9, force_omit, N__NTX__Request_descr_.raw->forceomit); |
| decoded_length = n__NTX__Request().RAW_decode(N__NTX__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__NTX__Request).msgFunction() == 66) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 67) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(10, force_omit, N__NTX__Response_descr_.raw->forceomit); |
| decoded_length = n__NTX__Response().RAW_decode(N__NTX__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__NTX__Response).msgFunction() == 67) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 128) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(11, force_omit, N__GP__Request_descr_.raw->forceomit); |
| decoded_length = n__GP__Request().RAW_decode(N__GP__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__GP__Request).msgFunction() == 128) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 129) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(12, force_omit, N__GP__Response_descr_.raw->forceomit); |
| decoded_length = n__GP__Response().RAW_decode(N__GP__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__GP__Response).msgFunction() == 129) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 130) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(13, force_omit, N__GP__Reset__Statistics_descr_.raw->forceomit); |
| decoded_length = n__GP__Reset__Statistics().RAW_decode(N__GP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__GP__Reset__Statistics).msgFunction() == 130) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 131) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(14, force_omit, N__SP__Request_descr_.raw->forceomit); |
| decoded_length = n__SP__Request().RAW_decode(N__SP__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__SP__Request).msgFunction() == 131) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 132) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(15, force_omit, N__SP__Response_descr_.raw->forceomit); |
| decoded_length = n__SP__Response().RAW_decode(N__SP__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__SP__Response).msgFunction() == 132) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 133) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(16, force_omit, N__SP__Reset__Statistics_descr_.raw->forceomit); |
| decoded_length = n__SP__Reset__Statistics().RAW_decode(N__SP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__SP__Reset__Statistics).msgFunction() == 133) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 192) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(17, force_omit, N__OC__Request_descr_.raw->forceomit); |
| decoded_length = n__OC__Request().RAW_decode(N__OC__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__OC__Request).msgFunction() == 192) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 193) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(18, force_omit, N__OC__Response_descr_.raw->forceomit); |
| decoded_length = n__OC__Response().RAW_decode(N__OC__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__OC__Response).msgFunction() == 193) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 194) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(19, force_omit, N__CC__Request_descr_.raw->forceomit); |
| decoded_length = n__CC__Request().RAW_decode(N__CC__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__CC__Request).msgFunction() == 194) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| already_failed = FALSE; |
| if (!already_failed) { |
| if (decoded_0_length > 0) { |
| if (temporal_0 == 195) { |
| p_buf.set_pos_bit(starting_pos); |
| RAW_Force_Omit field_force_omit(20, force_omit, N__CC__Response_descr_.raw->forceomit); |
| decoded_length = n__CC__Response().RAW_decode(N__CC__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit); |
| if (decoded_length > 0) { |
| if ((*field_n__CC__Response).msgFunction() == 195) { |
| return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength; |
| }else already_failed = TRUE; |
| } |
| } |
| } |
| } |
| } |
| clean_up(); |
| return -1; |
| } |
| |
| int NetworkMessage::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const |
| { |
| int encoded_length = 0; |
| myleaf.isleaf = FALSE; |
| myleaf.body.node.num_of_nodes = 21; myleaf.body.node.nodes = init_nodes_of_enc_tree(21); |
| memset(myleaf.body.node.nodes, 0, 21 * sizeof(RAW_enc_tree *)); |
| switch (union_selection) { |
| case ALT_n__MFDB__Request: |
| myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, N__MFDB__Request_descr_.raw); |
| encoded_length = field_n__MFDB__Request->RAW_encode(N__MFDB__Request_descr_, *myleaf.body.node.nodes[0]); |
| myleaf.body.node.nodes[0]->coding_descr = &N__MFDB__Request_descr_; |
| if ((*field_n__MFDB__Request).msgFunction() != 0) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={0,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 0; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDB__Response: |
| myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, N__MFDB__Response_descr_.raw); |
| encoded_length = field_n__MFDB__Response->RAW_encode(N__MFDB__Response_descr_, *myleaf.body.node.nodes[1]); |
| myleaf.body.node.nodes[1]->coding_descr = &N__MFDB__Response_descr_; |
| if ((*field_n__MFDB__Response).msgFunction() != 1) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={1,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 1; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDB__Add: |
| myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, N__MFDB__Add_descr_.raw); |
| encoded_length = field_n__MFDB__Add->RAW_encode(N__MFDB__Add_descr_, *myleaf.body.node.nodes[2]); |
| myleaf.body.node.nodes[2]->coding_descr = &N__MFDB__Add_descr_; |
| if ((*field_n__MFDB__Add).msgFunction() != 2) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={2,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 2; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDB__Delete: |
| myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, N__MFDB__Delete_descr_.raw); |
| encoded_length = field_n__MFDB__Delete->RAW_encode(N__MFDB__Delete_descr_, *myleaf.body.node.nodes[3]); |
| myleaf.body.node.nodes[3]->coding_descr = &N__MFDB__Delete_descr_; |
| if ((*field_n__MFDB__Delete).msgFunction() != 3) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={3,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 3; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDB__Clear: |
| myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, N__MFDB__Clear_descr_.raw); |
| encoded_length = field_n__MFDB__Clear->RAW_encode(N__MFDB__Clear_descr_, *myleaf.body.node.nodes[4]); |
| myleaf.body.node.nodes[4]->coding_descr = &N__MFDB__Clear_descr_; |
| if ((*field_n__MFDB__Clear).msgFunction() != 4) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={4,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 4; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDB__Create__Entry: |
| myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, N__MFDB__Create__Entry_descr_.raw); |
| encoded_length = field_n__MFDB__Create__Entry->RAW_encode(N__MFDB__Create__Entry_descr_, *myleaf.body.node.nodes[5]); |
| myleaf.body.node.nodes[5]->coding_descr = &N__MFDB__Create__Entry_descr_; |
| if ((*field_n__MFDB__Create__Entry).msgFunction() != 6) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={5,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 6; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__MFDBNQ__Add: |
| myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, N__MFDBNQ__Add_descr_.raw); |
| encoded_length = field_n__MFDBNQ__Add->RAW_encode(N__MFDBNQ__Add_descr_, *myleaf.body.node.nodes[6]); |
| myleaf.body.node.nodes[6]->coding_descr = &N__MFDBNQ__Add_descr_; |
| if ((*field_n__MFDBNQ__Add).msgFunction() != 7) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={6,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 7; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__NT__Request: |
| myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, N__NT__Request_descr_.raw); |
| encoded_length = field_n__NT__Request->RAW_encode(N__NT__Request_descr_, *myleaf.body.node.nodes[7]); |
| myleaf.body.node.nodes[7]->coding_descr = &N__NT__Request_descr_; |
| if ((*field_n__NT__Request).msgFunction() != 64) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={7,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 64; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__NT__Response: |
| myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, N__NT__Response_descr_.raw); |
| encoded_length = field_n__NT__Response->RAW_encode(N__NT__Response_descr_, *myleaf.body.node.nodes[8]); |
| myleaf.body.node.nodes[8]->coding_descr = &N__NT__Response_descr_; |
| if ((*field_n__NT__Response).msgFunction() != 65) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={8,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 65; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__NTX__Request: |
| myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, N__NTX__Request_descr_.raw); |
| encoded_length = field_n__NTX__Request->RAW_encode(N__NTX__Request_descr_, *myleaf.body.node.nodes[9]); |
| myleaf.body.node.nodes[9]->coding_descr = &N__NTX__Request_descr_; |
| if ((*field_n__NTX__Request).msgFunction() != 66) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={9,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 66; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__NTX__Response: |
| myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, N__NTX__Response_descr_.raw); |
| encoded_length = field_n__NTX__Response->RAW_encode(N__NTX__Response_descr_, *myleaf.body.node.nodes[10]); |
| myleaf.body.node.nodes[10]->coding_descr = &N__NTX__Response_descr_; |
| if ((*field_n__NTX__Response).msgFunction() != 67) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={10,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 67; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__GP__Request: |
| myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, N__GP__Request_descr_.raw); |
| encoded_length = field_n__GP__Request->RAW_encode(N__GP__Request_descr_, *myleaf.body.node.nodes[11]); |
| myleaf.body.node.nodes[11]->coding_descr = &N__GP__Request_descr_; |
| if ((*field_n__GP__Request).msgFunction() != 128) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={11,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 128; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__GP__Response: |
| myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, N__GP__Response_descr_.raw); |
| encoded_length = field_n__GP__Response->RAW_encode(N__GP__Response_descr_, *myleaf.body.node.nodes[12]); |
| myleaf.body.node.nodes[12]->coding_descr = &N__GP__Response_descr_; |
| if ((*field_n__GP__Response).msgFunction() != 129) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={12,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 129; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__GP__Reset__Statistics: |
| myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, N__GP__Reset__Statistics_descr_.raw); |
| encoded_length = field_n__GP__Reset__Statistics->RAW_encode(N__GP__Reset__Statistics_descr_, *myleaf.body.node.nodes[13]); |
| myleaf.body.node.nodes[13]->coding_descr = &N__GP__Reset__Statistics_descr_; |
| if ((*field_n__GP__Reset__Statistics).msgFunction() != 130) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={13,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 130; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__SP__Request: |
| myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, N__SP__Request_descr_.raw); |
| encoded_length = field_n__SP__Request->RAW_encode(N__SP__Request_descr_, *myleaf.body.node.nodes[14]); |
| myleaf.body.node.nodes[14]->coding_descr = &N__SP__Request_descr_; |
| if ((*field_n__SP__Request).msgFunction() != 131) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={14,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 131; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__SP__Response: |
| myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, N__SP__Response_descr_.raw); |
| encoded_length = field_n__SP__Response->RAW_encode(N__SP__Response_descr_, *myleaf.body.node.nodes[15]); |
| myleaf.body.node.nodes[15]->coding_descr = &N__SP__Response_descr_; |
| if ((*field_n__SP__Response).msgFunction() != 132) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={15,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 132; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__SP__Reset__Statistics: |
| myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, N__SP__Reset__Statistics_descr_.raw); |
| encoded_length = field_n__SP__Reset__Statistics->RAW_encode(N__SP__Reset__Statistics_descr_, *myleaf.body.node.nodes[16]); |
| myleaf.body.node.nodes[16]->coding_descr = &N__SP__Reset__Statistics_descr_; |
| if ((*field_n__SP__Reset__Statistics).msgFunction() != 133) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={16,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 133; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__OC__Request: |
| myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 17, N__OC__Request_descr_.raw); |
| encoded_length = field_n__OC__Request->RAW_encode(N__OC__Request_descr_, *myleaf.body.node.nodes[17]); |
| myleaf.body.node.nodes[17]->coding_descr = &N__OC__Request_descr_; |
| if ((*field_n__OC__Request).msgFunction() != 192) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={17,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 192; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__OC__Response: |
| myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 18, N__OC__Response_descr_.raw); |
| encoded_length = field_n__OC__Response->RAW_encode(N__OC__Response_descr_, *myleaf.body.node.nodes[18]); |
| myleaf.body.node.nodes[18]->coding_descr = &N__OC__Response_descr_; |
| if ((*field_n__OC__Response).msgFunction() != 193) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={18,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 193; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__CC__Request: |
| myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 19, N__CC__Request_descr_.raw); |
| encoded_length = field_n__CC__Request->RAW_encode(N__CC__Request_descr_, *myleaf.body.node.nodes[19]); |
| myleaf.body.node.nodes[19]->coding_descr = &N__CC__Request_descr_; |
| if ((*field_n__CC__Request).msgFunction() != 194) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={19,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 194; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| case ALT_n__CC__Response: |
| myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 20, N__CC__Response_descr_.raw); |
| encoded_length = field_n__CC__Response->RAW_encode(N__CC__Response_descr_, *myleaf.body.node.nodes[20]); |
| myleaf.body.node.nodes[20]->coding_descr = &N__CC__Response_descr_; |
| if ((*field_n__CC__Response).msgFunction() != 195) { |
| RAW_enc_tree* temp_leaf; |
| { |
| RAW_enc_tr_pos pr_pos0; |
| pr_pos0.level=myleaf.curr_pos.level+2; |
| int new_pos0[]={20,0}; |
| pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0); |
| temp_leaf = myleaf.get_node(pr_pos0); |
| if(temp_leaf != NULL){ |
| INTEGER new_val = 195; |
| new_val.RAW_encode(Function_descr_,*temp_leaf); |
| } else { |
| TTCN_EncDec_ErrorContext::error |
| (TTCN_EncDec::ET_OMITTED_TAG, "Encoding a tagged, but omitted value."); |
| } |
| free_tree_pos(pr_pos0.pos); |
| } |
| } |
| break; |
| default: |
| TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value."); |
| } |
| return encoded_length; |
| } |
| |
| void NetworkMessage_template::copy_value(const NetworkMessage& other_value) |
| { |
| single_value.union_selection = other_value.get_selection(); |
| switch (single_value.union_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| single_value.field_n__MFDB__Request = new N__MFDB__Request_template(other_value.n__MFDB__Request()); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| single_value.field_n__MFDB__Response = new N__MFDB__Response_template(other_value.n__MFDB__Response()); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| single_value.field_n__MFDB__Add = new N__MFDB__Add_template(other_value.n__MFDB__Add()); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(other_value.n__MFDB__Delete()); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(other_value.n__MFDB__Clear()); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(other_value.n__MFDB__Create__Entry()); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(other_value.n__MFDBNQ__Add()); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| single_value.field_n__NT__Request = new N__NT__Request_template(other_value.n__NT__Request()); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| single_value.field_n__NT__Response = new N__NT__Response_template(other_value.n__NT__Response()); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| single_value.field_n__NTX__Request = new N__NTX__Request_template(other_value.n__NTX__Request()); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| single_value.field_n__NTX__Response = new N__NTX__Response_template(other_value.n__NTX__Response()); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| single_value.field_n__GP__Request = new N__GP__Request_template(other_value.n__GP__Request()); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| single_value.field_n__GP__Response = new N__GP__Response_template(other_value.n__GP__Response()); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(other_value.n__GP__Reset__Statistics()); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| single_value.field_n__SP__Request = new N__SP__Request_template(other_value.n__SP__Request()); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| single_value.field_n__SP__Response = new N__SP__Response_template(other_value.n__SP__Response()); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(other_value.n__SP__Reset__Statistics()); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| single_value.field_n__OC__Request = new N__OC__Request_template(other_value.n__OC__Request()); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| single_value.field_n__OC__Response = new N__OC__Response_template(other_value.n__OC__Response()); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| single_value.field_n__CC__Request = new N__CC__Request_template(other_value.n__CC__Request()); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| single_value.field_n__CC__Response = new N__CC__Response_template(other_value.n__CC__Response()); |
| break; |
| default: |
| TTCN_error("Initializing a template with an unbound value of type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| set_selection(SPECIFIC_VALUE); |
| } |
| |
| void NetworkMessage_template::copy_template(const NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request: |
| single_value.field_n__MFDB__Request = new N__MFDB__Request_template(*other_value.single_value.field_n__MFDB__Request); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| single_value.field_n__MFDB__Response = new N__MFDB__Response_template(*other_value.single_value.field_n__MFDB__Response); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| single_value.field_n__MFDB__Add = new N__MFDB__Add_template(*other_value.single_value.field_n__MFDB__Add); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(*other_value.single_value.field_n__MFDB__Delete); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(*other_value.single_value.field_n__MFDB__Clear); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(*other_value.single_value.field_n__MFDB__Create__Entry); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(*other_value.single_value.field_n__MFDBNQ__Add); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| single_value.field_n__NT__Request = new N__NT__Request_template(*other_value.single_value.field_n__NT__Request); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| single_value.field_n__NT__Response = new N__NT__Response_template(*other_value.single_value.field_n__NT__Response); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| single_value.field_n__NTX__Request = new N__NTX__Request_template(*other_value.single_value.field_n__NTX__Request); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| single_value.field_n__NTX__Response = new N__NTX__Response_template(*other_value.single_value.field_n__NTX__Response); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| single_value.field_n__GP__Request = new N__GP__Request_template(*other_value.single_value.field_n__GP__Request); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| single_value.field_n__GP__Response = new N__GP__Response_template(*other_value.single_value.field_n__GP__Response); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(*other_value.single_value.field_n__GP__Reset__Statistics); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| single_value.field_n__SP__Request = new N__SP__Request_template(*other_value.single_value.field_n__SP__Request); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| single_value.field_n__SP__Response = new N__SP__Response_template(*other_value.single_value.field_n__SP__Response); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(*other_value.single_value.field_n__SP__Reset__Statistics); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| single_value.field_n__OC__Request = new N__OC__Request_template(*other_value.single_value.field_n__OC__Request); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| single_value.field_n__OC__Response = new N__OC__Response_template(*other_value.single_value.field_n__OC__Response); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| single_value.field_n__CC__Request = new N__CC__Request_template(*other_value.single_value.field_n__CC__Request); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| single_value.field_n__CC__Response = new N__CC__Response_template(*other_value.single_value.field_n__CC__Response); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| case OMIT_VALUE: |
| case ANY_VALUE: |
| case ANY_OR_OMIT: |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| value_list.n_values = other_value.value_list.n_values; |
| value_list.list_value = new NetworkMessage_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; |
| default: |
| TTCN_error("Copying an uninitialized template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| set_selection(other_value); |
| } |
| |
| NetworkMessage_template::NetworkMessage_template() |
| { |
| } |
| |
| NetworkMessage_template::NetworkMessage_template(template_sel other_value) |
| : Base_Template(other_value) |
| { |
| check_single_selection(other_value); |
| } |
| |
| NetworkMessage_template::NetworkMessage_template(const NetworkMessage& other_value) |
| { |
| copy_value(other_value); |
| } |
| |
| NetworkMessage_template::NetworkMessage_template(const OPTIONAL<NetworkMessage>& other_value) |
| { |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const NetworkMessage&)other_value); |
| break; |
| case OPTIONAL_OMIT: |
| set_selection(OMIT_VALUE); |
| break; |
| default: |
| TTCN_error("Creating a template of union type @IsobusNMMessageTypes.NetworkMessage from an unbound optional field."); |
| } |
| } |
| |
| NetworkMessage_template::NetworkMessage_template(const NetworkMessage_template& other_value) |
| : Base_Template(){ |
| copy_template(other_value); |
| } |
| |
| NetworkMessage_template::~NetworkMessage_template() |
| { |
| clean_up(); |
| } |
| |
| void NetworkMessage_template::clean_up() |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| switch (single_value.union_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| delete single_value.field_n__MFDB__Request; |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| delete single_value.field_n__MFDB__Response; |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| delete single_value.field_n__MFDB__Add; |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| delete single_value.field_n__MFDB__Delete; |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| delete single_value.field_n__MFDB__Clear; |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| delete single_value.field_n__MFDB__Create__Entry; |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| delete single_value.field_n__MFDBNQ__Add; |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| delete single_value.field_n__NT__Request; |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| delete single_value.field_n__NT__Response; |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| delete single_value.field_n__NTX__Request; |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| delete single_value.field_n__NTX__Response; |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| delete single_value.field_n__GP__Request; |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| delete single_value.field_n__GP__Response; |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| delete single_value.field_n__GP__Reset__Statistics; |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| delete single_value.field_n__SP__Request; |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| delete single_value.field_n__SP__Response; |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| delete single_value.field_n__SP__Reset__Statistics; |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| delete single_value.field_n__OC__Request; |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| delete single_value.field_n__OC__Response; |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| delete single_value.field_n__CC__Request; |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| delete single_value.field_n__CC__Response; |
| default: |
| break; |
| } |
| break; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| delete [] value_list.list_value; |
| default: |
| break; |
| } |
| template_selection = UNINITIALIZED_TEMPLATE; |
| } |
| |
| NetworkMessage_template& NetworkMessage_template::operator=(template_sel other_value) |
| { |
| check_single_selection(other_value); |
| clean_up(); |
| set_selection(other_value); |
| return *this; |
| } |
| |
| NetworkMessage_template& NetworkMessage_template::operator=(const NetworkMessage& other_value) |
| { |
| clean_up(); |
| copy_value(other_value); |
| return *this; |
| } |
| |
| NetworkMessage_template& NetworkMessage_template::operator=(const OPTIONAL<NetworkMessage>& other_value) |
| { |
| clean_up(); |
| switch (other_value.get_selection()) { |
| case OPTIONAL_PRESENT: |
| copy_value((const NetworkMessage&)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 @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| return *this; |
| } |
| |
| NetworkMessage_template& NetworkMessage_template::operator=(const NetworkMessage_template& other_value) |
| { |
| if (&other_value != this) { |
| clean_up(); |
| copy_template(other_value); |
| } |
| return *this; |
| } |
| |
| boolean NetworkMessage_template::match(const NetworkMessage& 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: |
| { |
| NetworkMessage::union_selection_type value_selection = other_value.get_selection(); |
| if (value_selection == NetworkMessage::UNBOUND_VALUE) return FALSE; |
| if (value_selection != single_value.union_selection) return FALSE; |
| switch (value_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| return single_value.field_n__MFDB__Request->match(other_value.n__MFDB__Request(), legacy); |
| case NetworkMessage::ALT_n__MFDB__Response: |
| return single_value.field_n__MFDB__Response->match(other_value.n__MFDB__Response(), legacy); |
| case NetworkMessage::ALT_n__MFDB__Add: |
| return single_value.field_n__MFDB__Add->match(other_value.n__MFDB__Add(), legacy); |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| return single_value.field_n__MFDB__Delete->match(other_value.n__MFDB__Delete(), legacy); |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| return single_value.field_n__MFDB__Clear->match(other_value.n__MFDB__Clear(), legacy); |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| return single_value.field_n__MFDB__Create__Entry->match(other_value.n__MFDB__Create__Entry(), legacy); |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| return single_value.field_n__MFDBNQ__Add->match(other_value.n__MFDBNQ__Add(), legacy); |
| case NetworkMessage::ALT_n__NT__Request: |
| return single_value.field_n__NT__Request->match(other_value.n__NT__Request(), legacy); |
| case NetworkMessage::ALT_n__NT__Response: |
| return single_value.field_n__NT__Response->match(other_value.n__NT__Response(), legacy); |
| case NetworkMessage::ALT_n__NTX__Request: |
| return single_value.field_n__NTX__Request->match(other_value.n__NTX__Request(), legacy); |
| case NetworkMessage::ALT_n__NTX__Response: |
| return single_value.field_n__NTX__Response->match(other_value.n__NTX__Response(), legacy); |
| case NetworkMessage::ALT_n__GP__Request: |
| return single_value.field_n__GP__Request->match(other_value.n__GP__Request(), legacy); |
| case NetworkMessage::ALT_n__GP__Response: |
| return single_value.field_n__GP__Response->match(other_value.n__GP__Response(), legacy); |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| return single_value.field_n__GP__Reset__Statistics->match(other_value.n__GP__Reset__Statistics(), legacy); |
| case NetworkMessage::ALT_n__SP__Request: |
| return single_value.field_n__SP__Request->match(other_value.n__SP__Request(), legacy); |
| case NetworkMessage::ALT_n__SP__Response: |
| return single_value.field_n__SP__Response->match(other_value.n__SP__Response(), legacy); |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| return single_value.field_n__SP__Reset__Statistics->match(other_value.n__SP__Reset__Statistics(), legacy); |
| case NetworkMessage::ALT_n__OC__Request: |
| return single_value.field_n__OC__Request->match(other_value.n__OC__Request(), legacy); |
| case NetworkMessage::ALT_n__OC__Response: |
| return single_value.field_n__OC__Response->match(other_value.n__OC__Response(), legacy); |
| case NetworkMessage::ALT_n__CC__Request: |
| return single_value.field_n__CC__Request->match(other_value.n__CC__Request(), legacy); |
| case NetworkMessage::ALT_n__CC__Response: |
| return single_value.field_n__CC__Response->match(other_value.n__CC__Response(), legacy); |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| 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; |
| default: |
| TTCN_error ("Matching an uninitialized template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| return FALSE; |
| } |
| |
| boolean NetworkMessage_template::is_value() const |
| { |
| if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE; |
| switch (single_value.union_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| return single_value.field_n__MFDB__Request->is_value(); |
| case NetworkMessage::ALT_n__MFDB__Response: |
| return single_value.field_n__MFDB__Response->is_value(); |
| case NetworkMessage::ALT_n__MFDB__Add: |
| return single_value.field_n__MFDB__Add->is_value(); |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| return single_value.field_n__MFDB__Delete->is_value(); |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| return single_value.field_n__MFDB__Clear->is_value(); |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| return single_value.field_n__MFDB__Create__Entry->is_value(); |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| return single_value.field_n__MFDBNQ__Add->is_value(); |
| case NetworkMessage::ALT_n__NT__Request: |
| return single_value.field_n__NT__Request->is_value(); |
| case NetworkMessage::ALT_n__NT__Response: |
| return single_value.field_n__NT__Response->is_value(); |
| case NetworkMessage::ALT_n__NTX__Request: |
| return single_value.field_n__NTX__Request->is_value(); |
| case NetworkMessage::ALT_n__NTX__Response: |
| return single_value.field_n__NTX__Response->is_value(); |
| case NetworkMessage::ALT_n__GP__Request: |
| return single_value.field_n__GP__Request->is_value(); |
| case NetworkMessage::ALT_n__GP__Response: |
| return single_value.field_n__GP__Response->is_value(); |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| return single_value.field_n__GP__Reset__Statistics->is_value(); |
| case NetworkMessage::ALT_n__SP__Request: |
| return single_value.field_n__SP__Request->is_value(); |
| case NetworkMessage::ALT_n__SP__Response: |
| return single_value.field_n__SP__Response->is_value(); |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| return single_value.field_n__SP__Reset__Statistics->is_value(); |
| case NetworkMessage::ALT_n__OC__Request: |
| return single_value.field_n__OC__Request->is_value(); |
| case NetworkMessage::ALT_n__OC__Response: |
| return single_value.field_n__OC__Response->is_value(); |
| case NetworkMessage::ALT_n__CC__Request: |
| return single_value.field_n__CC__Request->is_value(); |
| case NetworkMessage::ALT_n__CC__Response: |
| return single_value.field_n__CC__Response->is_value(); |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| |
| NetworkMessage NetworkMessage_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 @IsobusNMMessageTypes.NetworkMessage."); |
| NetworkMessage ret_val; |
| switch (single_value.union_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| ret_val.n__MFDB__Request() = single_value.field_n__MFDB__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| ret_val.n__MFDB__Response() = single_value.field_n__MFDB__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| ret_val.n__MFDB__Add() = single_value.field_n__MFDB__Add->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| ret_val.n__MFDB__Delete() = single_value.field_n__MFDB__Delete->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| ret_val.n__MFDB__Clear() = single_value.field_n__MFDB__Clear->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| ret_val.n__MFDB__Create__Entry() = single_value.field_n__MFDB__Create__Entry->valueof(); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| ret_val.n__MFDBNQ__Add() = single_value.field_n__MFDBNQ__Add->valueof(); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| ret_val.n__NT__Request() = single_value.field_n__NT__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| ret_val.n__NT__Response() = single_value.field_n__NT__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| ret_val.n__NTX__Request() = single_value.field_n__NTX__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| ret_val.n__NTX__Response() = single_value.field_n__NTX__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| ret_val.n__GP__Request() = single_value.field_n__GP__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| ret_val.n__GP__Response() = single_value.field_n__GP__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| ret_val.n__GP__Reset__Statistics() = single_value.field_n__GP__Reset__Statistics->valueof(); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| ret_val.n__SP__Request() = single_value.field_n__SP__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| ret_val.n__SP__Response() = single_value.field_n__SP__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| ret_val.n__SP__Reset__Statistics() = single_value.field_n__SP__Reset__Statistics->valueof(); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| ret_val.n__OC__Request() = single_value.field_n__OC__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| ret_val.n__OC__Response() = single_value.field_n__OC__Response->valueof(); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| ret_val.n__CC__Request() = single_value.field_n__CC__Request->valueof(); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| ret_val.n__CC__Response() = single_value.field_n__CC__Response->valueof(); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| return ret_val; |
| } |
| |
| NetworkMessage_template& NetworkMessage_template::list_item(unsigned int list_index) const |
| { |
| if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return value_list.list_value[list_index]; |
| } |
| void NetworkMessage_template::set_type(template_sel template_type, unsigned int list_length) |
| { |
| if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| clean_up(); |
| set_selection(template_type); |
| value_list.n_values = list_length; |
| value_list.list_value = new NetworkMessage_template[list_length]; |
| } |
| |
| N__MFDB__Request_template& NetworkMessage_template::n__MFDB__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Request = new N__MFDB__Request_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Request = new N__MFDB__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Request; |
| } |
| |
| const N__MFDB__Request_template& NetworkMessage_template::n__MFDB__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Request) TTCN_error("Accessing non-selected field n_MFDB_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Request; |
| } |
| |
| N__MFDB__Response_template& NetworkMessage_template::n__MFDB__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Response = new N__MFDB__Response_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Response = new N__MFDB__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Response; |
| } |
| |
| const N__MFDB__Response_template& NetworkMessage_template::n__MFDB__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Response) TTCN_error("Accessing non-selected field n_MFDB_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Response; |
| } |
| |
| N__MFDB__Add_template& NetworkMessage_template::n__MFDB__Add() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Add) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Add = new N__MFDB__Add_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Add = new N__MFDB__Add_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Add; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Add; |
| } |
| |
| const N__MFDB__Add_template& NetworkMessage_template::n__MFDB__Add() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Add in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Add) TTCN_error("Accessing non-selected field n_MFDB_Add in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Add; |
| } |
| |
| N__MFDB__Delete_template& NetworkMessage_template::n__MFDB__Delete() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Delete) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Delete; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Delete; |
| } |
| |
| const N__MFDB__Delete_template& NetworkMessage_template::n__MFDB__Delete() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Delete in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Delete) TTCN_error("Accessing non-selected field n_MFDB_Delete in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Delete; |
| } |
| |
| N__MFDB__Clear_template& NetworkMessage_template::n__MFDB__Clear() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Clear) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Clear; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Clear; |
| } |
| |
| const N__MFDB__Clear_template& NetworkMessage_template::n__MFDB__Clear() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Clear in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Clear) TTCN_error("Accessing non-selected field n_MFDB_Clear in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Clear; |
| } |
| |
| N__MFDB__Create__Entry_template& NetworkMessage_template::n__MFDB__Create__Entry() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Create__Entry) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(ANY_VALUE); |
| else single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDB__Create__Entry; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDB__Create__Entry; |
| } |
| |
| const N__MFDB__Create__Entry_template& NetworkMessage_template::n__MFDB__Create__Entry() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Create_Entry in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Create__Entry) TTCN_error("Accessing non-selected field n_MFDB_Create_Entry in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDB__Create__Entry; |
| } |
| |
| N__MFDBNQ__Add_template& NetworkMessage_template::n__MFDBNQ__Add() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDBNQ__Add) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(ANY_VALUE); |
| else single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template; |
| single_value.union_selection = NetworkMessage::ALT_n__MFDBNQ__Add; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__MFDBNQ__Add; |
| } |
| |
| const N__MFDBNQ__Add_template& NetworkMessage_template::n__MFDBNQ__Add() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDBNQ_Add in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__MFDBNQ__Add) TTCN_error("Accessing non-selected field n_MFDBNQ_Add in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__MFDBNQ__Add; |
| } |
| |
| N__NT__Request_template& NetworkMessage_template::n__NT__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NT__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NT__Request = new N__NT__Request_template(ANY_VALUE); |
| else single_value.field_n__NT__Request = new N__NT__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__NT__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__NT__Request; |
| } |
| |
| const N__NT__Request_template& NetworkMessage_template::n__NT__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NT_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__NT__Request) TTCN_error("Accessing non-selected field n_NT_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__NT__Request; |
| } |
| |
| N__NT__Response_template& NetworkMessage_template::n__NT__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NT__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NT__Response = new N__NT__Response_template(ANY_VALUE); |
| else single_value.field_n__NT__Response = new N__NT__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__NT__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__NT__Response; |
| } |
| |
| const N__NT__Response_template& NetworkMessage_template::n__NT__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NT_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__NT__Response) TTCN_error("Accessing non-selected field n_NT_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__NT__Response; |
| } |
| |
| N__NTX__Request_template& NetworkMessage_template::n__NTX__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NTX__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NTX__Request = new N__NTX__Request_template(ANY_VALUE); |
| else single_value.field_n__NTX__Request = new N__NTX__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__NTX__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__NTX__Request; |
| } |
| |
| const N__NTX__Request_template& NetworkMessage_template::n__NTX__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NTX_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__NTX__Request) TTCN_error("Accessing non-selected field n_NTX_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__NTX__Request; |
| } |
| |
| N__NTX__Response_template& NetworkMessage_template::n__NTX__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NTX__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NTX__Response = new N__NTX__Response_template(ANY_VALUE); |
| else single_value.field_n__NTX__Response = new N__NTX__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__NTX__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__NTX__Response; |
| } |
| |
| const N__NTX__Response_template& NetworkMessage_template::n__NTX__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NTX_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__NTX__Response) TTCN_error("Accessing non-selected field n_NTX_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__NTX__Response; |
| } |
| |
| N__GP__Request_template& NetworkMessage_template::n__GP__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Request = new N__GP__Request_template(ANY_VALUE); |
| else single_value.field_n__GP__Request = new N__GP__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__GP__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__GP__Request; |
| } |
| |
| const N__GP__Request_template& NetworkMessage_template::n__GP__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__GP__Request) TTCN_error("Accessing non-selected field n_GP_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__GP__Request; |
| } |
| |
| N__GP__Response_template& NetworkMessage_template::n__GP__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Response = new N__GP__Response_template(ANY_VALUE); |
| else single_value.field_n__GP__Response = new N__GP__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__GP__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__GP__Response; |
| } |
| |
| const N__GP__Response_template& NetworkMessage_template::n__GP__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__GP__Response) TTCN_error("Accessing non-selected field n_GP_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__GP__Response; |
| } |
| |
| N__GP__Reset__Statistics_template& NetworkMessage_template::n__GP__Reset__Statistics() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Reset__Statistics) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(ANY_VALUE); |
| else single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template; |
| single_value.union_selection = NetworkMessage::ALT_n__GP__Reset__Statistics; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__GP__Reset__Statistics; |
| } |
| |
| const N__GP__Reset__Statistics_template& NetworkMessage_template::n__GP__Reset__Statistics() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Reset_Statistics in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__GP__Reset__Statistics) TTCN_error("Accessing non-selected field n_GP_Reset_Statistics in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__GP__Reset__Statistics; |
| } |
| |
| N__SP__Request_template& NetworkMessage_template::n__SP__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Request = new N__SP__Request_template(ANY_VALUE); |
| else single_value.field_n__SP__Request = new N__SP__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__SP__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__SP__Request; |
| } |
| |
| const N__SP__Request_template& NetworkMessage_template::n__SP__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__SP__Request) TTCN_error("Accessing non-selected field n_SP_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__SP__Request; |
| } |
| |
| N__SP__Response_template& NetworkMessage_template::n__SP__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Response = new N__SP__Response_template(ANY_VALUE); |
| else single_value.field_n__SP__Response = new N__SP__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__SP__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__SP__Response; |
| } |
| |
| const N__SP__Response_template& NetworkMessage_template::n__SP__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__SP__Response) TTCN_error("Accessing non-selected field n_SP_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__SP__Response; |
| } |
| |
| N__SP__Reset__Statistics_template& NetworkMessage_template::n__SP__Reset__Statistics() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Reset__Statistics) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(ANY_VALUE); |
| else single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template; |
| single_value.union_selection = NetworkMessage::ALT_n__SP__Reset__Statistics; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__SP__Reset__Statistics; |
| } |
| |
| const N__SP__Reset__Statistics_template& NetworkMessage_template::n__SP__Reset__Statistics() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Reset_Statistics in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__SP__Reset__Statistics) TTCN_error("Accessing non-selected field n_SP_Reset_Statistics in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__SP__Reset__Statistics; |
| } |
| |
| N__OC__Request_template& NetworkMessage_template::n__OC__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__OC__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__OC__Request = new N__OC__Request_template(ANY_VALUE); |
| else single_value.field_n__OC__Request = new N__OC__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__OC__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__OC__Request; |
| } |
| |
| const N__OC__Request_template& NetworkMessage_template::n__OC__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_OC_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__OC__Request) TTCN_error("Accessing non-selected field n_OC_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__OC__Request; |
| } |
| |
| N__OC__Response_template& NetworkMessage_template::n__OC__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__OC__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__OC__Response = new N__OC__Response_template(ANY_VALUE); |
| else single_value.field_n__OC__Response = new N__OC__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__OC__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__OC__Response; |
| } |
| |
| const N__OC__Response_template& NetworkMessage_template::n__OC__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_OC_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__OC__Response) TTCN_error("Accessing non-selected field n_OC_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__OC__Response; |
| } |
| |
| N__CC__Request_template& NetworkMessage_template::n__CC__Request() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__CC__Request) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__CC__Request = new N__CC__Request_template(ANY_VALUE); |
| else single_value.field_n__CC__Request = new N__CC__Request_template; |
| single_value.union_selection = NetworkMessage::ALT_n__CC__Request; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__CC__Request; |
| } |
| |
| const N__CC__Request_template& NetworkMessage_template::n__CC__Request() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_CC_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__CC__Request) TTCN_error("Accessing non-selected field n_CC_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__CC__Request; |
| } |
| |
| N__CC__Response_template& NetworkMessage_template::n__CC__Response() |
| { |
| if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__CC__Response) { |
| template_sel old_selection = template_selection; |
| clean_up(); |
| if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__CC__Response = new N__CC__Response_template(ANY_VALUE); |
| else single_value.field_n__CC__Response = new N__CC__Response_template; |
| single_value.union_selection = NetworkMessage::ALT_n__CC__Response; |
| set_selection(SPECIFIC_VALUE); |
| } |
| return *single_value.field_n__CC__Response; |
| } |
| |
| const N__CC__Response_template& NetworkMessage_template::n__CC__Response() const |
| { |
| if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_CC_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| if (single_value.union_selection != NetworkMessage::ALT_n__CC__Response) TTCN_error("Accessing non-selected field n_CC_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| return *single_value.field_n__CC__Response; |
| } |
| |
| boolean NetworkMessage_template::ischosen(NetworkMessage::union_selection_type checked_selection) const |
| { |
| if (checked_selection == NetworkMessage::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusNMMessageTypes.NetworkMessage."); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| if (single_value.union_selection == NetworkMessage::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| 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 @IsobusNMMessageTypes.NetworkMessage 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 NetworkMessage_template::log() const |
| { |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| switch (single_value.union_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| TTCN_Logger::log_event_str("{ n_MFDB_Request := "); |
| single_value.field_n__MFDB__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| TTCN_Logger::log_event_str("{ n_MFDB_Response := "); |
| single_value.field_n__MFDB__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| TTCN_Logger::log_event_str("{ n_MFDB_Add := "); |
| single_value.field_n__MFDB__Add->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| TTCN_Logger::log_event_str("{ n_MFDB_Delete := "); |
| single_value.field_n__MFDB__Delete->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| TTCN_Logger::log_event_str("{ n_MFDB_Clear := "); |
| single_value.field_n__MFDB__Clear->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := "); |
| single_value.field_n__MFDB__Create__Entry->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := "); |
| single_value.field_n__MFDBNQ__Add->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| TTCN_Logger::log_event_str("{ n_NT_Request := "); |
| single_value.field_n__NT__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| TTCN_Logger::log_event_str("{ n_NT_Response := "); |
| single_value.field_n__NT__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| TTCN_Logger::log_event_str("{ n_NTX_Request := "); |
| single_value.field_n__NTX__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| TTCN_Logger::log_event_str("{ n_NTX_Response := "); |
| single_value.field_n__NTX__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| TTCN_Logger::log_event_str("{ n_GP_Request := "); |
| single_value.field_n__GP__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| TTCN_Logger::log_event_str("{ n_GP_Response := "); |
| single_value.field_n__GP__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := "); |
| single_value.field_n__GP__Reset__Statistics->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| TTCN_Logger::log_event_str("{ n_SP_Request := "); |
| single_value.field_n__SP__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| TTCN_Logger::log_event_str("{ n_SP_Response := "); |
| single_value.field_n__SP__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := "); |
| single_value.field_n__SP__Reset__Statistics->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| TTCN_Logger::log_event_str("{ n_OC_Request := "); |
| single_value.field_n__OC__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| TTCN_Logger::log_event_str("{ n_OC_Response := "); |
| single_value.field_n__OC__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| TTCN_Logger::log_event_str("{ n_CC_Request := "); |
| single_value.field_n__CC__Request->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| TTCN_Logger::log_event_str("{ n_CC_Response := "); |
| single_value.field_n__CC__Response->log(); |
| TTCN_Logger::log_event_str(" }"); |
| break; |
| default: |
| TTCN_Logger::log_event_str("<invalid selector>"); |
| } |
| break; |
| case COMPLEMENTED_LIST: |
| TTCN_Logger::log_event_str("complement"); |
| 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; |
| default: |
| log_generic(); |
| } |
| log_ifpresent(); |
| } |
| |
| void NetworkMessage_template::log_match(const NetworkMessage& 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) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Request"); |
| single_value.field_n__MFDB__Request->log_match(match_value.n__MFDB__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Request := "); |
| single_value.field_n__MFDB__Request->log_match(match_value.n__MFDB__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Response"); |
| single_value.field_n__MFDB__Response->log_match(match_value.n__MFDB__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Response := "); |
| single_value.field_n__MFDB__Response->log_match(match_value.n__MFDB__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Add"); |
| single_value.field_n__MFDB__Add->log_match(match_value.n__MFDB__Add(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Add := "); |
| single_value.field_n__MFDB__Add->log_match(match_value.n__MFDB__Add(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Delete"); |
| single_value.field_n__MFDB__Delete->log_match(match_value.n__MFDB__Delete(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Delete := "); |
| single_value.field_n__MFDB__Delete->log_match(match_value.n__MFDB__Delete(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Clear"); |
| single_value.field_n__MFDB__Clear->log_match(match_value.n__MFDB__Clear(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Clear := "); |
| single_value.field_n__MFDB__Clear->log_match(match_value.n__MFDB__Clear(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDB_Create_Entry"); |
| single_value.field_n__MFDB__Create__Entry->log_match(match_value.n__MFDB__Create__Entry(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := "); |
| single_value.field_n__MFDB__Create__Entry->log_match(match_value.n__MFDB__Create__Entry(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_MFDBNQ_Add"); |
| single_value.field_n__MFDBNQ__Add->log_match(match_value.n__MFDBNQ__Add(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := "); |
| single_value.field_n__MFDBNQ__Add->log_match(match_value.n__MFDBNQ__Add(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_NT_Request"); |
| single_value.field_n__NT__Request->log_match(match_value.n__NT__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_NT_Request := "); |
| single_value.field_n__NT__Request->log_match(match_value.n__NT__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_NT_Response"); |
| single_value.field_n__NT__Response->log_match(match_value.n__NT__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_NT_Response := "); |
| single_value.field_n__NT__Response->log_match(match_value.n__NT__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_NTX_Request"); |
| single_value.field_n__NTX__Request->log_match(match_value.n__NTX__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_NTX_Request := "); |
| single_value.field_n__NTX__Request->log_match(match_value.n__NTX__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_NTX_Response"); |
| single_value.field_n__NTX__Response->log_match(match_value.n__NTX__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_NTX_Response := "); |
| single_value.field_n__NTX__Response->log_match(match_value.n__NTX__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_GP_Request"); |
| single_value.field_n__GP__Request->log_match(match_value.n__GP__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_GP_Request := "); |
| single_value.field_n__GP__Request->log_match(match_value.n__GP__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_GP_Response"); |
| single_value.field_n__GP__Response->log_match(match_value.n__GP__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_GP_Response := "); |
| single_value.field_n__GP__Response->log_match(match_value.n__GP__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_GP_Reset_Statistics"); |
| single_value.field_n__GP__Reset__Statistics->log_match(match_value.n__GP__Reset__Statistics(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := "); |
| single_value.field_n__GP__Reset__Statistics->log_match(match_value.n__GP__Reset__Statistics(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_SP_Request"); |
| single_value.field_n__SP__Request->log_match(match_value.n__SP__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_SP_Request := "); |
| single_value.field_n__SP__Request->log_match(match_value.n__SP__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_SP_Response"); |
| single_value.field_n__SP__Response->log_match(match_value.n__SP__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_SP_Response := "); |
| single_value.field_n__SP__Response->log_match(match_value.n__SP__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_SP_Reset_Statistics"); |
| single_value.field_n__SP__Reset__Statistics->log_match(match_value.n__SP__Reset__Statistics(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := "); |
| single_value.field_n__SP__Reset__Statistics->log_match(match_value.n__SP__Reset__Statistics(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_OC_Request"); |
| single_value.field_n__OC__Request->log_match(match_value.n__OC__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_OC_Request := "); |
| single_value.field_n__OC__Request->log_match(match_value.n__OC__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_OC_Response"); |
| single_value.field_n__OC__Response->log_match(match_value.n__OC__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_OC_Response := "); |
| single_value.field_n__OC__Response->log_match(match_value.n__OC__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_CC_Request"); |
| single_value.field_n__CC__Request->log_match(match_value.n__CC__Request(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_CC_Request := "); |
| single_value.field_n__CC__Request->log_match(match_value.n__CC__Request(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){ |
| TTCN_Logger::log_logmatch_info(".n_CC_Response"); |
| single_value.field_n__CC__Response->log_match(match_value.n__CC__Response(), legacy); |
| } else { |
| TTCN_Logger::log_event_str("{ n_CC_Response := "); |
| single_value.field_n__CC__Response->log_match(match_value.n__CC__Response(), legacy); |
| TTCN_Logger::log_event_str(" }"); |
| } |
| break; |
| default: |
| TTCN_Logger::print_logmatch_buffer(); |
| TTCN_Logger::log_event_str("<invalid selector>"); |
| } |
| } 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 NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request: |
| single_value.field_n__MFDB__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| single_value.field_n__MFDB__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| single_value.field_n__MFDB__Add->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| single_value.field_n__MFDB__Delete->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| single_value.field_n__MFDB__Clear->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| single_value.field_n__MFDB__Create__Entry->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| single_value.field_n__MFDBNQ__Add->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| single_value.field_n__NT__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| single_value.field_n__NT__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| single_value.field_n__NTX__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| single_value.field_n__NTX__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| single_value.field_n__GP__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| single_value.field_n__GP__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| single_value.field_n__GP__Reset__Statistics->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| single_value.field_n__SP__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| single_value.field_n__SP__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| single_value.field_n__SP__Reset__Statistics->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| single_value.field_n__OC__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| single_value.field_n__OC__Response->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| single_value.field_n__CC__Request->encode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| single_value.field_n__CC__Response->encode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| 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 @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| |
| void NetworkMessage_template::decode_text(Text_Buf& text_buf) |
| { |
| clean_up(); |
| decode_text_base(text_buf); |
| switch (template_selection) { |
| case SPECIFIC_VALUE: |
| { |
| single_value.union_selection = NetworkMessage::UNBOUND_VALUE; |
| NetworkMessage::union_selection_type new_selection = (NetworkMessage::union_selection_type)text_buf.pull_int().get_val(); |
| switch (new_selection) { |
| case NetworkMessage::ALT_n__MFDB__Request: |
| single_value.field_n__MFDB__Request = new N__MFDB__Request_template; |
| single_value.field_n__MFDB__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| single_value.field_n__MFDB__Response = new N__MFDB__Response_template; |
| single_value.field_n__MFDB__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| single_value.field_n__MFDB__Add = new N__MFDB__Add_template; |
| single_value.field_n__MFDB__Add->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template; |
| single_value.field_n__MFDB__Delete->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template; |
| single_value.field_n__MFDB__Clear->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template; |
| single_value.field_n__MFDB__Create__Entry->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template; |
| single_value.field_n__MFDBNQ__Add->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NT__Request: |
| single_value.field_n__NT__Request = new N__NT__Request_template; |
| single_value.field_n__NT__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NT__Response: |
| single_value.field_n__NT__Response = new N__NT__Response_template; |
| single_value.field_n__NT__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NTX__Request: |
| single_value.field_n__NTX__Request = new N__NTX__Request_template; |
| single_value.field_n__NTX__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__NTX__Response: |
| single_value.field_n__NTX__Response = new N__NTX__Response_template; |
| single_value.field_n__NTX__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Request: |
| single_value.field_n__GP__Request = new N__GP__Request_template; |
| single_value.field_n__GP__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Response: |
| single_value.field_n__GP__Response = new N__GP__Response_template; |
| single_value.field_n__GP__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template; |
| single_value.field_n__GP__Reset__Statistics->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Request: |
| single_value.field_n__SP__Request = new N__SP__Request_template; |
| single_value.field_n__SP__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Response: |
| single_value.field_n__SP__Response = new N__SP__Response_template; |
| single_value.field_n__SP__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template; |
| single_value.field_n__SP__Reset__Statistics->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__OC__Request: |
| single_value.field_n__OC__Request = new N__OC__Request_template; |
| single_value.field_n__OC__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__OC__Response: |
| single_value.field_n__OC__Response = new N__OC__Response_template; |
| single_value.field_n__OC__Response->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__CC__Request: |
| single_value.field_n__CC__Request = new N__CC__Request_template; |
| single_value.field_n__CC__Request->decode_text(text_buf); |
| break; |
| case NetworkMessage::ALT_n__CC__Response: |
| single_value.field_n__CC__Response = new N__CC__Response_template; |
| single_value.field_n__CC__Response->decode_text(text_buf); |
| break; |
| default: |
| TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| 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 NetworkMessage_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 @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| } |
| |
| boolean NetworkMessage_template::is_present(boolean legacy) const |
| { |
| if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE; |
| return !match_omit(legacy); |
| } |
| |
| boolean NetworkMessage_template::match_omit(boolean legacy) const |
| { |
| if (is_ifpresent) return TRUE; |
| switch (template_selection) { |
| case OMIT_VALUE: |
| case ANY_OR_OMIT: |
| return TRUE; |
| case VALUE_LIST: |
| case COMPLEMENTED_LIST: |
| if (legacy) { |
| for (unsigned int v_idx=0; v_idx<value_list.n_values; v_idx++) |
| if (value_list.list_value[v_idx].match_omit()) |
| return template_selection==VALUE_LIST; |
| return template_selection==COMPLEMENTED_LIST; |
| } // else fall through |
| default: |
| return FALSE; |
| } |
| return FALSE; |
| } |
| |
| void NetworkMessage_template::set_param(Module_Param& param) |
| { |
| if (dynamic_cast<Module_Param_Name*>(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 `@IsobusNMMessageTypes.NetworkMessage'"); |
| } |
| if (strcmp("n_MFDB_Request", param_field) == 0) { |
| n__MFDB__Request().set_param(param); |
| return; |
| } else if (strcmp("n_MFDB_Response", param_field) == 0) { |
| n__MFDB__Response().set_param(param); |
| return; |
| } else if (strcmp("n_MFDB_Add", param_field) == 0) { |
| n__MFDB__Add().set_param(param); |
| return; |
| } else if (strcmp("n_MFDB_Delete", param_field) == 0) { |
| n__MFDB__Delete().set_param(param); |
| return; |
| } else if (strcmp("n_MFDB_Clear", param_field) == 0) { |
| n__MFDB__Clear().set_param(param); |
| return; |
| } else if (strcmp("n_MFDB_Create_Entry", param_field) == 0) { |
| n__MFDB__Create__Entry().set_param(param); |
| return; |
| } else if (strcmp("n_MFDBNQ_Add", param_field) == 0) { |
| n__MFDBNQ__Add().set_param(param); |
| return; |
| } else if (strcmp("n_NT_Request", param_field) == 0) { |
| n__NT__Request().set_param(param); |
| return; |
| } else if (strcmp("n_NT_Response", param_field) == 0) { |
| n__NT__Response().set_param(param); |
| return; |
| } else if (strcmp("n_NTX_Request", param_field) == 0) { |
| n__NTX__Request().set_param(param); |
| return; |
| } else if (strcmp("n_NTX_Response", param_field) == 0) { |
| n__NTX__Response().set_param(param); |
| return; |
| } else if (strcmp("n_GP_Request", param_field) == 0) { |
| n__GP__Request().set_param(param); |
| return; |
| } else if (strcmp("n_GP_Response", param_field) == 0) { |
| n__GP__Response().set_param(param); |
| return; |
| } else if (strcmp("n_GP_Reset_Statistics", param_field) == 0) { |
| n__GP__Reset__Statistics().set_param(param); |
| return; |
| } else if (strcmp("n_SP_Request", param_field) == 0) { |
| n__SP__Request().set_param(param); |
| return; |
| } else if (strcmp("n_SP_Response", param_field) == 0) { |
| n__SP__Response().set_param(param); |
| return; |
| } else if (strcmp("n_SP_Reset_Statistics", param_field) == 0) { |
| n__SP__Reset__Statistics().set_param(param); |
| return; |
| } else if (strcmp("n_OC_Request", param_field) == 0) { |
| n__OC__Request().set_param(param); |
| return; |
| } else if (strcmp("n_OC_Response", param_field) == 0) { |
| n__OC__Response().set_param(param); |
| return; |
| } else if (strcmp("n_CC_Request", param_field) == 0) { |
| n__CC__Request().set_param(param); |
| return; |
| } else if (strcmp("n_CC_Response", param_field) == 0) { |
| n__CC__Response().set_param(param); |
| return; |
| } else param.error("Field `%s' not found in union template type `@IsobusNMMessageTypes.NetworkMessage'", 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: { |
| NetworkMessage_template new_temp; |
| new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : COMPLEMENTED_LIST, m_p->get_size()); |
| for (size_t p_i=0; p_i<m_p->get_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", "@IsobusNMMessageTypes.NetworkMessage"); |
| 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, "n_MFDB_Request")) { |
| n__MFDB__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDB_Response")) { |
| n__MFDB__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDB_Add")) { |
| n__MFDB__Add().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDB_Delete")) { |
| n__MFDB__Delete().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDB_Clear")) { |
| n__MFDB__Clear().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDB_Create_Entry")) { |
| n__MFDB__Create__Entry().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_MFDBNQ_Add")) { |
| n__MFDBNQ__Add().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_NT_Request")) { |
| n__NT__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_NT_Response")) { |
| n__NT__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_NTX_Request")) { |
| n__NTX__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_NTX_Response")) { |
| n__NTX__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_GP_Request")) { |
| n__GP__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_GP_Response")) { |
| n__GP__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_GP_Reset_Statistics")) { |
| n__GP__Reset__Statistics().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_SP_Request")) { |
| n__SP__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_SP_Response")) { |
| n__SP__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_SP_Reset_Statistics")) { |
| n__SP__Reset__Statistics().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_OC_Request")) { |
| n__OC__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_OC_Response")) { |
| n__OC__Response().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_CC_Request")) { |
| n__CC__Request().set_param(*mp_last); |
| break; |
| } |
| if (!strcmp(last_name, "n_CC_Response")) { |
| n__CC__Response().set_param(*mp_last); |
| break; |
| } |
| mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.NetworkMessage.", last_name); |
| } break; |
| default: |
| param.type_error("union template", "@IsobusNMMessageTypes.NetworkMessage"); |
| } |
| is_ifpresent = param.get_ifpresent(); |
| } |
| |
| void NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request: |
| single_value.field_n__MFDB__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDB__Response: |
| single_value.field_n__MFDB__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDB__Add: |
| single_value.field_n__MFDB__Add->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDB__Delete: |
| single_value.field_n__MFDB__Delete->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDB__Clear: |
| single_value.field_n__MFDB__Clear->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDB__Create__Entry: |
| single_value.field_n__MFDB__Create__Entry->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__MFDBNQ__Add: |
| single_value.field_n__MFDBNQ__Add->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__NT__Request: |
| single_value.field_n__NT__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__NT__Response: |
| single_value.field_n__NT__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__NTX__Request: |
| single_value.field_n__NTX__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__NTX__Response: |
| single_value.field_n__NTX__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__GP__Request: |
| single_value.field_n__GP__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__GP__Response: |
| single_value.field_n__GP__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__GP__Reset__Statistics: |
| single_value.field_n__GP__Reset__Statistics->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__SP__Request: |
| single_value.field_n__SP__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__SP__Response: |
| single_value.field_n__SP__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__SP__Reset__Statistics: |
| single_value.field_n__SP__Reset__Statistics->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__OC__Request: |
| single_value.field_n__OC__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__OC__Response: |
| single_value.field_n__OC__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__CC__Request: |
| single_value.field_n__CC__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| case NetworkMessage::ALT_n__CC__Response: |
| single_value.field_n__CC__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage"); |
| return; |
| default: |
| TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusNMMessageTypes.NetworkMessage."); |
| } |
| 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 : "@IsobusNMMessageTypes.NetworkMessage"); |
| } |
| |
| |
| /* Bodies of functions, altsteps and testcases */ |
| |
| boolean operator==(null_type, const N__MFDBNQ__Add_pgnEntries& other_value) |
| { |
| if (other_value.val_ptr == NULL) |
| TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries."); |
| return other_value.val_ptr->n_elements == 0; |
| } |
| |
| boolean operator==(null_type, const N__NTX__Response_sourceaddress__NAME__pairs& other_value) |
| { |
| if (other_value.val_ptr == NULL) |
| TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs."); |
| return other_value.val_ptr->n_elements == 0; |
| } |
| |
| boolean operator==(null_type, const N__GP__Request_parametricIdentifiers& other_value) |
| { |
| if (other_value.val_ptr == NULL) |
| TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers."); |
| return other_value.val_ptr->n_elements == 0; |
| } |
| |
| boolean operator==(null_type, const N__SP__Request_parametricIdentifiers& other_value) |
| { |
| if (other_value.val_ptr == NULL) |
| TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers."); |
| return other_value.val_ptr->n_elements == 0; |
| } |
| |
| |
| /* Bodies of static functions */ |
| |
| static void pre_init_module() |
| { |
| TTCN_Location current_location("IsobusNMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusNMMessageTypes"); |
| General__Types::module_object.pre_init_module(); |
| IsobusMessageTypes::module_object.pre_init_module(); |
| } |
| |
| static void post_init_module() |
| { |
| TTCN_Location current_location("IsobusNMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusNMMessageTypes"); |
| General__Types::module_object.post_init_module(); |
| IsobusMessageTypes::module_object.post_init_module(); |
| } |
| |
| |
| } /* end of namespace */ |