blob: 537a96f92b97ef6567aee54e14c6f3273ea32a13 [file] [log] [blame]
// 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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 = &param;
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 */